Quelqu'un peut-il me dire s'il est possible de trouver un élément en fonction de son contenu plutôt que par un identifiant ou une classe ?
J'essaie de trouver des éléments qui n'ont pas de classes ou d'ID distincts. (Ensuite, je dois ensuite trouver le parent de cet élément.)
Réponses:
Vous pouvez utiliser le
:contains
sélecteur pour obtenir des éléments en fonction de leur contenu.Démo ici
la source
.filter
place.$('div').filter(function(){ return $(this).text().toLowerCase() === 'test';})
$('div:contains( "test" )').css('background-color', 'red');
Dans la documentation jQuery, il est dit:
Par conséquent, il ne suffit pas d'utiliser le
:contains()
sélecteur , vous devez également vérifier si le texte que vous recherchez est le contenu direct de l'élément que vous ciblez, quelque chose comme ça:la source
<li>Hello <a href='#'>World</a>, How Are You.
. Ici, siHow
on recherche la condition échouera je pense.Fellas, je sais que c'est vieux mais bon j'ai cette solution qui je pense fonctionne mieux que tout. Surtout surmonte la sensibilité à la casse avec laquelle jquery: contains () est livré avec:
J'espère que quelqu'un dans un proche avenir le trouvera utile.
la source
La réponse de Rocket ne fonctionne pas.
J'ai simplement modifié son DEMO ici et vous pouvez voir que le DOM racine est sélectionné.
ajoutez le sélecteur " : last " dans le code pour résoudre ce problème.
la source
Le meilleur moyen à mon avis.
la source
Oui, utilisez le
contains
sélecteur jQuery .la source
Le jQuery suivant sélectionne les nœuds div qui contiennent du texte mais sans enfants, qui sont les nœuds feuilles de l'arborescence DOM.
la source