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?

Était-ce utile?

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.

Rick Strahl: utiliser jQuery pour rechercher du contenu et créer des filtres de sélecteur personnalisés

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");

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top