2010-11-26 6 views
0

Je cherche à obtenir le code HTML de la page de recherche de texte, puis sélectionnez l'élément auquel il appartient avec jQuery. Malheureusement, il n'y a pas d'identifiant unique pour les éléments.jQuery pour sélectionner le texte du HTML

+0

Est-ce la même question que vous [posé des questions sur plus tôt] (http://stackoverflow.com/questions/4281421/jquery-select-text-within-br-and-td-in-table)? – user113716

+0

duplication possible de [Rechercher chaîne de texte en utilisant JQuery?] (Http://stackoverflow.com/questions/926580/find-text-string-using-jquery) –

+0

@patrick pas tout à fait avant le texte assis dans une classe et je pouvais marcher le dom; @Gert très similaire sauf que je veux l'élément parent qui contient le texte. – van

Répondre

1

Considérez ceci:

<div><span>some text</span></div> 

Ensuite, pour obtenir seulement le span quand vous faites la recherche, faites ceci:

var elements = $('body *').contents().filter(function() { 
    return this.nodeType == 3 && $(this).text().indexOf("some text") != -1; 
}).parent(); 

Si le texte est trouvé ailleurs, elements contiendra également les autres éléments. Par exemple:

<div><span>some text</span><p>some text</p><strong>not the same text</strong></div> 

Les résultats contiendront les span et les p éléments.

Un dernier exemple:

<div>some text<span>some text</span><p>some text</p><strong>not the same text</strong></div> 

Maintenant résultats ont le div aussi, car il est le parent direct du noeud texte (c.-à-some text)

+0

pas jquery mais ça marche – van

+0

@nav - quelle partie de $ (...). Contents(). Filter (...). Parent(); n'est pas jQuery? – scunliffe

+0

@scunliffe: Je pense qu'il veut dire la partie 'this.nodeType'. Le reste est jQuery si :) – cambraca

5

Vous devriez être en mesure de le faire

var element = $('*:contains("search text")'); 
+2

juste être conscient que c'est probablement une requête très coûteuse ... – scunliffe

+3

cela va sélectionner tous les parents aussi, jusqu'à l'élément '' (parce que techniquement, ils contiennent cette chaîne) – cambraca

+0

et ensuite utiliser ' .each() 'pour parcourir les éléments. – thomaspaulb

Questions connexes