2011-03-24 3 views
3

Cela semble comme si je suis tombé dans le trou de lapin et j'imagine qu'il y a une stratégie globale plus simple, mais je suis là.javascript (en essayant de copier windows.location sans succès)

Je souhaite autoriser les utilisateurs à trier un ensemble donné de résultats APRÈS avoir filtré ces résultats. Je veux garder les filtres d'origine en place en ajoutant un nouveau (tri). Je voulais éviter de devoir créer des entrées cachées avec les filtres d'origine et ensuite soumettre le formulaire via un gestionnaire d'événements click sur les liens de tri. Ce que j'ai essayé de faire à la place était de lire le fichier window.location et de concaténer les paramètres GET avec mon nouveau paramètre de tri. Cela a fonctionné, sauf qu'il a continué à concaténer avec chaque clic de tri. Je veux seulement une variable de tri ajoutée par clic. J'ai essayé une solution regex et ça ne marche pas. Il ne cesse de changer la variable windows.location et de rediriger la page. Je suis nouveau à js et je ne sais pas comment copier en profondeur les chaînes ... ou l'équivalent. Comment puis-je résoudre ce problème? Je suis aussi nouveau pour regex js, alors pardonne ma naïveté

$('div#sort ul a').each(function(){ 
    var currentPath=window.location; 
    currentPath=currentPath.replace(/sort=\w+$/,'sort='+$(this).attr('data-sort')); 
    $(this).attr('href',currentPath) 

Répondre

3

window.location est pas une chaîne, il est un « objet URL ». Vous pouvez le forcer dans une chaîne comme ceci:

var currentPath = window.location + '';

+3

ou 'window.location.toString()' – cdmckay

+0

parfait. Ça l'a réparé, merci! D'une manière générale, la méthode globale décrite plus haut semble-t-elle raisonnablement efficace? Je suis nouveau à ce – Ben

+0

@Brendan: C'est OK. Ne vous souciez pas de l'efficacité jusqu'à ce que cela devienne un problème – Cameron

Questions connexes