Y a-t-il une version insensible à la casse de la : contient sélecteur jQuery ou dois-je faire le travail manuellement par une boucle sur tous les éléments et en comparant leurs .text() à ma chaîne ?
Réponses
Trop de publicités?Ce que j'ai fait pour jQuery 1.2 est :
jQuery.extend(
jQuery.expr[':'], {
Contains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0"
});
Cela permet de prolonger jquery pour avoir un :Contient un sélecteur qui est insensible à la casse, l' :contient sélecteur reste inchangé.
Edit: Pour jQuery 1.3 (merci @user95227) et, plus tard, vous avez besoin
jQuery.expr[':'].Contains = function(a,i,m){
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
Edit: Apparemment accéder au DOM directement à l'aide de
(a.textContent || a.innerText || "")
au lieu de
jQuery(a).text()
Dans l'expression précédente vitesses jusqu'considérablement essayer à vos risques et périls si la vitesse est un problème. (voir @John 's question)
Dernière modification: Pour jQuery 1.8, il devrait être:
jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
return function( elem ) {
return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
Pour le rendre éventuellement insensible à la casse : http://bugs.jquery.com/ticket/278
Ensuite, utilisez au lieu de
Si quelqu'un (comme moi) s'intéresse ce ne un et m[3] signifie en Contient définition.
CLÉ/LÉGENDE: Params mis à disposition par jQuery pour une utilisation dans le sélecteur de définitions:
r = jQuery tableau d'éléments d'être examinés de près. (par exemple: r.longueur = Nombre d'éléments)
i = indice de l'élément actuellement sous surveillance, au sein de la matrice de r.
un = élément actuellement dans le collimateur. Sélecteur de déclaration doit retourner true pour les inclure dans son appariés résultats.
m[2] = nodeName ou * que nous recherchons présentement (à gauche de la virgule).
m[3] = param passé dans l' :sélecteur(param). Généralement un numéro d'index, comme dans :nth-of-type(5), ou d'une chaîne, comme dans :couleur(bleu).