Czy ktoś może mi powiedzieć, czy można znaleźć element na podstawie jego zawartości, a nie identyfikatora lub klasy ?
Próbuję znaleźć elementy, które nie mają odrębnych klas lub identyfikatorów. (Następnie muszę znaleźć element nadrzędny tego elementu).
Odpowiedzi:
Możesz użyć
:contains
selektora, aby uzyskać elementy na podstawie ich zawartości.Demo tutaj
źródło
.filter
zamiast tego.$('div').filter(function(){ return $(this).text().toLowerCase() === 'test';})
$('div:contains( "test" )').css('background-color', 'red');
W dokumentacji jQuery jest napisane:
Dlatego nie wystarczy użyć
:contains()
selektora , musisz również sprawdzić, czy szukany tekst jest bezpośrednią zawartością elementu, na który celujesz, coś takiego:źródło
<li>Hello <a href='#'>World</a>, How Are You.
. Tutaj, jeśliHow
jest przeszukiwany, warunek się nie powiedzie.Faceci, wiem, że to stare, ale hej mam to rozwiązanie, które moim zdaniem działa lepiej niż wszyscy. Przede wszystkim eliminuje rozróżnianie wielkości liter, które jquery: zawiera () jest dostarczane z:
Mam nadzieję, że ktoś w najbliższej przyszłości uzna to za pomocne.
źródło
Odpowiedź rakiety nie działa.
Po prostu zmodyfikowałem tutaj jego DEMO i widać, że wybrany jest główny katalog DOM.
dodaj selektor „ : ostatni ” w kodzie, aby to naprawić.
źródło
Najlepszy sposób moim zdaniem.
źródło
Tak, użyj
contains
selektora jQuery .źródło
Poniższy jQuery wybiera węzły div, które zawierają tekst, ale nie mają potomków, które są węzłami liści drzewa DOM.
źródło