Comment utiliser jQuery pour ignorer la casse lors de la sélection?
-
03-07-2019 - |
Question
J'essaie actuellement de désactiver un lien à l'aide du sélecteur jQuery suivant:
$("a[href$=/sites/abcd/sectors]").removeAttr("href");
Le problème est que parfois, le href peut ne pas toujours être en minuscule sur la page. Lorsque cela se produit, le sélecteur ne correspond plus.
Quelqu'un sait-il comment résoudre ce problème? Puis-je changer le comportement cette fois pour ignorer la casse?
La solution
Je suis tombé dessus moi-même. J'ai inversé un peu la logique pour me permettre de la comparer sans cas. Cela demande un peu plus de travail, mais au moins ça marche.
$('a').each(function(i,n) {
var href = $(n).attr("href");
href = href.toLowerCase();
if (href.endsWith('/sites/abcd/sectors'))
$(n).removeAttr('href');
});
Vous devez définir votre propre endsWith
logique.
Autres conseils
jQuery a été construit pour être étendu. Vous pouvez le corriger ou ajouter votre propre type de sélecteur ne respectant pas la casse.
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');
}
})
Il s’agit tout d’abord de l’expression NON VALIDE car elle contient \
,
Si vous souhaitez utiliser l'un des méta-caractères (tels que !"#$%&'()*+,./:;<=>?@[\]^``{|}~
) 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 vous échapper du /
à \\/
donc votre expression sera $("a[href$=\\/sites\\/abcd\\/sectors]").removeAttr("href");