Supposons qu'une page Web comporte une chaîne telle que "Je suis une chaîne simple" que je souhaite rechercher. Comment pourrais-je procéder à l'aide de JQuery?
241
jQuery a la méthode contains. Voici un extrait pour vous:
<script type="text/javascript">
$(function() {
var foundin = $('*:contains("I am a simple string")');
});
</script>
Le sélecteur ci-dessus sélectionne tout élément contenant la chaîne cible. Le foundin sera un objet jQuery qui contient tout élément correspondant. Voir les informations de l'API sur: https://api.jquery.com/contains-selector/
Une chose à noter avec le caractère générique «*» est que vous obtiendrez tous les éléments, y compris vos éléments html et body, dont vous ne voulez probablement pas. C'est pourquoi la plupart des exemples de jQuery et d'autres endroits utilisent $ ('div: contains ("I am a simple string")')
Normalement, les sélecteurs jQuery ne recherchent pas dans les «nœuds de texte» du DOM. Cependant, si vous utilisez la fonction .contents (), les nœuds de texte seront inclus, vous pouvez alors utiliser la propriété nodeType pour filtrer uniquement les nœuds de texte et la propriété nodeValue pour rechercher la chaîne de texte.
la source
.andSelf()
. Depuis api.jquery.com/andSelf : "Les objets jQuery conservent une pile interne qui conserve la trace des modifications apportées à l'ensemble d'éléments mis en correspondance. Lorsqu'une des méthodes de parcours DOM est appelée, le nouvel ensemble d'éléments est poussé vers la pile. Si l'ensemble d'éléments précédent est également souhaité. .andSelf () peut vous aider. " Je ne vois aucun contexte précédent, que me manque-t-il?Cela sélectionnera uniquement les éléments feuilles qui contiennent "Je suis une simple chaîne".
Collez ce qui suit dans la barre d'adresse pour le tester.
Si vous voulez saisir juste "Je suis une simple chaîne" . Enveloppez d'abord le texte dans un élément comme celui-ci.
puis faites cela.
la source
Si vous voulez juste le nœud le plus proche du texte que vous recherchez, vous pouvez utiliser ceci:
Cela fonctionnera même si votre code HTML ressemble à ceci:
L'utilisation du sélecteur ci-dessus trouvera la
<strong>
balise, car c'est la dernière balise qui contient toute cette chaîne.la source
<p>my text <b>my text</b></p>
- supprimer les ancêtres de la<b>
balise serait perdre l'autre matchJetez un œil à la mise en évidence (plugin jQuery).
la source
J'ajoute simplement à la réponse de Tony Miller, car cela m'a permis d'atteindre 90% de ce que je cherchais, mais cela n'a toujours pas fonctionné. L'ajout
.length > 0;
à la fin de son code a fait fonctionner mon script.la source
foundin += '*';
cette fonction devrait fonctionner. fait essentiellement une recherche récursive jusqu'à ce que nous obtenions une liste distincte de nœuds foliaires.
la source