2011-06-13 3 views
5

J'ai actuellement ce bit de jQuery que j'utilise pour ajouter une URL avec des informations de localisation.Vérification de la présence d'une chaîne de requête dans jQuery href

jQuery('a').attr('href', function() { 
      return this.href + "&location=/123/abc"; 
     }); 

Mon problème est que la plupart des liens ont? dans lequel fait pour l'utilisation de la & ci-dessus ok. Il y a quelques uns qui ne le font pas. Je cherche à vérifier l'url pour voir s'il y a un? Si je veux utiliser "& location =/123/abc", s'il n'y a pas? Je devrai utiliser "? Location =/123/abc"

Je ne suis pas le meilleur avec les instructions if/else. Toute aide serait appréciée.

if (thereIsA?InTheUrl) { 

    return this.href + "&location=/123/abc"; 

} else { 

    return this.href + "?location=/123/abc"; 

} 

Quelque chose comme ça, pas sûr oh de l'écrire.

Répondre

6
jQuery('a').attr('href', function() { 
     return (this.href.indexOf("?") >= 0) ? this.href + "&location=/123/abc" : this.href + "?location=/123/abc"; 
    }); 
+0

Cela a fonctionné parfaitement! – Michael

1

Michael.

Utilisez la fonction indexOf() de JavaScript.

Comme ceci:

if(this.href.indexOf('?')>=0){//PLACE MAGIC HERE} 

Comment ça marche est la suivante:

Position Retourne la chaîne trouvée si elle le trouve.
Renvoie -1 s'il ne le trouve pas, d'où >=0. La position 0 est le premier caractère d'une chaîne.

Détails ici:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/indexOf

+1

Cela fonctionne. Idem que la réponse acceptée ci-dessus, juste avec moins de détails. J'ai choisi la réponse ci-dessus afin que d'autres personnes puissent comprendre le processus. Merci. – Michael

0
if (this.href.indexOf("?") >= 0) 
+0

Cela fonctionne. Idem que la réponse acceptée ci-dessus, juste avec moins de détails. J'ai choisi la réponse ci-dessus afin que d'autres personnes puissent comprendre le processus. Merci. – Michael

1
var str = window.location.href; 
if (str.indexOf('?' >= 0) { 
    return str + "&location=/123/abc"; //there's a ? 
} else { 
    return str + "?location=/123/abc"; //no ? 
} 
Questions connexes