146 votes

Y a-t-il un jQuery insensible à la casse : contient le sélecteur ?

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 ?

127voto

Pat Points 18943

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

106voto

montrealmike Points 3795

Pour le rendre éventuellement insensible à la casse : http://bugs.jquery.com/ticket/278

Ensuite, utilisez au lieu de

41voto

user95227 Points 481

À partir de jQuery 1.3, cette méthode est obsolète. Pour que cela fonctionne, il doit être défini en fonction :

39voto

Alexander Prokofyev Points 14183

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).

32voto

seagullJS Points 249

Dans jQuery 1.8, vous devrez utiliser

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X