Powiedzmy, że strona internetowa ma ciąg taki jak „Jestem prostym ciągiem”, który chcę znaleźć. Jak mam to zrobić za pomocą JQuery?
241
jQuery ma metodę zawiera. Oto fragment dla Ciebie:
<script type="text/javascript">
$(function() {
var foundin = $('*:contains("I am a simple string")');
});
</script>
Selektor powyżej wybiera dowolny element zawierający ciąg docelowy. Foundin będzie obiektem jQuery zawierającym dowolny dopasowany element. Zobacz informacje API na: https://api.jquery.com/contains-selector/
Jedną rzeczą, na którą należy zwrócić uwagę za pomocą symbolu wieloznacznego „*”, jest to, że otrzymasz wszystkie elementy, w tym HTML i elementy treści, których prawdopodobnie nie chcesz. Dlatego większość przykładów w jQuery i innych miejscach używa $ („div: zawiera („ Jestem prosty ciąg znaków ”)”)
Zazwyczaj selektory jQuery nie wyszukują w „węzłach tekstowych” w DOM. Jeśli jednak użyjesz funkcji .contents (), zostaną uwzględnione węzły tekstowe, możesz użyć właściwości nodeType do filtrowania tylko węzłów tekstowych, a właściwości nodeValue do przeszukania ciągu tekstowego.
źródło
.andSelf()
. Od api.jquery.com/andSelf : „Obiekty jQuery utrzymują wewnętrzny stos, który śledzi zmiany w dopasowanym zestawie elementów. Po wywołaniu jednej z metod przejścia DOM nowy zestaw elementów jest wypychany na stos. Jeśli poprzedni zestaw elementów jest również pożądany, .andSelf () może pomóc. " Nie widzę wcześniejszego kontekstu, czego mi brakuje?Spowoduje to wybranie tylko elementów liścia, które zawierają „Jestem prostym ciągiem”.
Wklej następujące elementy w pasku adresu, aby go przetestować.
Jeśli chcesz złapać tylko „Jestem prostym ciągiem” . Najpierw zawiń tekst w takim elemencie.
a następnie zrób to.
źródło
Jeśli chcesz, aby węzeł znajdował się najbliżej szukanego tekstu, możesz użyć tego:
Działa to nawet, jeśli Twój HTML wygląda następująco:
Użycie powyższego selektora spowoduje znalezienie
<strong>
znacznika, ponieważ jest to ostatni znacznik, który zawiera cały ciąg.źródło
<p>my text <b>my text</b></p>
- usunięcie przodków<b>
tagu przegrać drugi meczSpójrz na wyróżnienie (wtyczka jQuery).
źródło
Po prostu dodałem do odpowiedzi Tony'ego Millera, ponieważ dzięki temu uzyskałem 90% w stosunku do tego, czego szukałem, ale nadal nie działało. Dodanie
.length > 0;
na końcu jego kodu uruchomiło mój skrypt.źródło
foundin += '*';
ta funkcja powinna działać. w zasadzie dokonuje rekurencyjnego wyszukiwania, dopóki nie otrzymamy wyraźnej listy węzłów liści.
źródło