2009-03-06 9 views
16

Je suis actuellement tente de désactiver un lien en utilisant le sélecteur jQuery suivant:Comment utiliser jQuery pour ignorer le cas lors de la sélection?

$("a[href$=/sites/abcd/sectors]").removeAttr("href"); 

Le problème est que, parfois, le href peut pas toujours être en minuscules sur la page. Lorsque cela se produit, le sélecteur ne correspond plus.

Est-ce que quelqu'un sait comment contourner ce problème? Puis-je changer le comportement une fois pour ignorer le cas?

+0

Utilisez-vous la dernière version de jQuery? Parce que je viens de tester ce sélecteur dans FF avec 1.3.2 sur une page avec à la fois HREF majuscule et href minuscule, et il correspondait tous les deux à chaque fois. Quel navigateur rencontrez-vous ce problème? – cdmckay

+0

jQuery 1.3.2 avec IE 7 - juste revérifié et le problème persiste. –

+0

@cdmckay: Je pense que l'OP signifiait que l'URL ne pouvait pas toujours être en minuscules. –

Répondre

14

Je me suis heurté à cela moi-même. J'ai changé un peu de logique pour me permettre de le comparer sans cas. Cela demande un peu plus de travail, mais au moins cela fonctionne. Vous devez définir votre propre logique endsWith.

+0

Merci, cela a bien fonctionné. J'ai utilisé un regex pour les finsWith. Au fait, toLower() devrait être toLowerCase(). –

+0

Ah, merci. Je l'ai fait de mémoire et j'ai oublié un morceau. Je l'ai mis à jour. – EndangeredMassa

1

Vous pouvez utiliser la fonction "est" dans jQuery. Ce n'est pas sensible à la casse.

$("a").each(function() { 
    if ($(this).is("a[href$=/sites/abcd/sectors]")) { 
     $(this).removeAttr('href'); 
    } 
    }) 
+0

J'ai testé ça mais ça ne marche pas. – Magu

1

D'abord c'est NON VALIDE expression car il contient \,

Si vous souhaitez utiliser les méta-caractères (comme !"#$%&'()*+,./:;<=>[email protected][\]^``{|}~) comme

une partie littérale d'un nom, vous devez échapper le caractère avec deux barres obliques inverses: \\.

Src: http://api.jquery.com/category/selectors/

vous devez donc échapper à la / à \\/

de sorte que votre expression sera $("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");

Questions connexes