jQuery :contient du sélecteur de recherche pour plusieurs chaînes de caractères
En supposant que j'ai:
<li id="1">Mary</li>
<li id="2">John, Mary, Dave</li>
<li id="3">John, Dave, Mary</li>
<li id="4">John</li>
Si j'ai besoin de trouver tous les <li> les Éléments qui contiennent "John" et "Marie", comment pourrais-je construire le jQuery?
À la recherche d'une chaîne unique semble facile:
$('li:contains("John")').text()
Je suis à la recherche de quelque chose comme le pseudo-code suivant:
$('li:contains("John")' && 'li:contains("Mary")').text()
Merci!
Vous devez vous connecter pour publier un commentaire.
Réponse
Pour trouver
li
's qui ont de texte contenant les DEUX Marie ET John:Pour trouver
li
's qui ont de texte contenant Marie OU John:Explication
Il suffit de penser de la
:contains
comme si c'était une déclaration de classe, comme.class
:C'est la même chose avec
:contains
:Démo
http://jsbin.com/ejuzi/edit
Comment sur
'
entre les deuxli:contains
.Réponse
La syntaxe correcte serait
$("li:contains('John'),li:contains('Mary')").css("color","red")
Mais j'ai trouvé que si vous avez eu beaucoup de cas de test, jQuery va faire très mal (surtout sur IE6, je sais, c'est vieux mais encore en usage). J'ai donc décidé d'écrire mon propre filtre attribut.
C'est la façon de l'utiliser:
$("li:mcontains('John','Mary')").css("color","red")
Code
.toLowerCase()
àcontents
ettheList[x]
pour faire de ce pas sensible à la casse.$("li:mcontains('John', 'Ringo', 'Mary')").css("color","red");
Après un peu de débogage, j'ai trouvé ` theList = meta[3].split("','");` a) j'ai été en utilisant ',<espace> " nécessaire pour supprimer l'espace par exemple: ',' b) a été divisée par don John, Ringo , Marie " (note les guillemets simples sur la première et la dernière entrée) Puis:$("li:mcontains(John', 'Ringo', 'Mary)").css("color","red");
a fait un travail!! Heureux d'être souligné ce que je fais de mal - mais c'est ce que j'ai trouvéC'est facile: