Ich habe das folgende Problem Ich kann scheinen zu arbeiten: Ich habe eine Reihe von Eltern span enthält einen anderen Satz von Tags, von denen aber nur 1 andere mit einem Text innerhalb. Ich möchte die Eltern extrahieren, deren innere Spannweite den genauen Text hat!JQuery wählen Sie die übergeordnete basierend auf Kind mit genauen Text
<span class="parent" id="1">
\t <p>..</p><p>..</p>
\t <span>text</span>
\t <a>..</a>
</span>
<span class="parent" id="2">
\t <span>some text</span>
\t <a>..</a>
</span>
....
<span class="parent" id="n">
\t <p>..</p>
\t <span>other</span>
</span>
Wenn ich nach "Text" Ich möchte nur die Spanne mit id == "1"
Mein ursprünglicher Versuch mit enthält den Wert 2 Spannweiten -> id == 1 und id == 2:
var current = "text";
var element = $('.parent:contains(' + current + ')');
ich auch mit Filter versucht haben, die in meiner bescheidenen Meinung nach funktionieren sollte aber nicht :(nicht
var element = $('.parent').filter(function() {
return ($(this).children().text()==current);
});
oder
var element = $('.parent').filter(function() {
return ($(this).children('span').text() == current)
});
Jede Hilfe wäre sehr dankbar, vielen Dank!
Zunächst sollte ein Blockelement als P kein Kind eines SPAN sein. Und Ihr zweiter Filter sollte funktionieren, wenn nur eine Spanne die des Elternteils ist. Also dann vielleicht Ihr Browser-Parser es aufgrund ungültigen HTML-Markup anders parst –
@ A.Wolff hat Recht. Es ist ratsam, zuerst die Semantik zu korrigieren. – n0m4d
Ich habe die letzte Lösung verwendet, die Sie haben, und es hat für mich funktioniert. Vielleicht entspricht der Text, den Sie suchen, nicht mit versteckten Zeichen. –