Kann mir jemand sagen, ob es möglich ist, ein Element anhand seines Inhalts und nicht anhand einer ID oder Klasse zu finden ?
Ich versuche Elemente zu finden, die keine unterschiedlichen Klassen oder IDs haben. (Dann muss ich dann das übergeordnete Element dieses Elements finden.)
Antworten:
Sie können den
:contains
Selektor verwenden, um Elemente basierend auf ihrem Inhalt abzurufen.Demo hier
quelle
.filter
stattdessen verwenden.$('div').filter(function(){ return $(this).text().toLowerCase() === 'test';})
$('div:contains( "test" )').css('background-color', 'red');
In der jQuery-Dokumentation heißt es:
Daher reicht es nicht aus, dass Sie den
:contains()
Selektor verwenden . Sie müssen auch überprüfen, ob der gesuchte Text der direkte Inhalt des Elements ist, auf das Sie abzielen.quelle
<li>Hello <a href='#'>World</a>, How Are You.
. WennHow
hier gesucht wird, wird die Bedingung meiner Meinung nach fehlschlagen.Fellas, ich weiß, das ist alt, aber hey, ich habe diese Lösung, die meiner Meinung nach besser funktioniert als alle anderen. In erster Linie überwindet die Groß- und Kleinschreibung, mit der die jquery: enthält () geliefert wird mit:
Hoffe, jemand in naher Zukunft findet es hilfreich.
quelle
Rockets Antwort funktioniert nicht.
Ich habe hier einfach sein DEMO geändert und Sie können sehen, dass das Root-DOM ausgewählt ist.
Fügen Sie im Code den Selektor " : last " hinzu, um dies zu beheben.
quelle
Bester Weg meiner Meinung nach.
quelle
Ja, verwenden Sie den jQuery-
contains
Selektor.quelle
In der folgenden jQuery werden Div-Knoten ausgewählt, die Text enthalten, aber keine untergeordneten Knoten haben. Dies sind die Blattknoten des DOM-Baums.
quelle