Katakanlah halaman web memiliki string seperti "Saya adalah string sederhana" yang ingin saya temukan. Bagaimana cara saya menggunakan JQuery?
241
jQuery memiliki metode berisi. Ini cuplikan untuk Anda:
<script type="text/javascript">
$(function() {
var foundin = $('*:contains("I am a simple string")');
});
</script>
Selektor di atas memilih elemen apa pun yang berisi string target. Foundin akan menjadi objek jQuery yang berisi elemen yang cocok. Lihat informasi API di: https://api.jquery.com/contains-selector/
Satu hal yang perlu diperhatikan dengan wildcard '*' adalah Anda akan mendapatkan semua elemen, termasuk elemen tubuh html Anda, yang mungkin tidak Anda inginkan. Itulah sebabnya sebagian besar contoh di jQuery dan tempat lain menggunakan $ ('div: berisi ("Saya adalah string sederhana")')
Biasanya pemilih jQuery tidak mencari di dalam "node teks" di DOM. Namun jika Anda menggunakan fungsi .contents (), simpul teks akan disertakan, maka Anda bisa menggunakan properti nodeType untuk memfilter hanya simpul teks, dan properti nodeValue untuk mencari string teks.
sumber
.andSelf()
. Dari api.jquery.com/andSelf : "objek jQuery memelihara tumpukan internal yang melacak perubahan pada set elemen yang cocok. Ketika salah satu metode traversal DOM dipanggil, set elemen baru didorong ke stack. Jika set elemen sebelumnya juga diinginkan, .andSelf () dapat membantu. " Saya tidak melihat konteks sebelumnya, apa yang saya lewatkan?Ini akan memilih hanya elemen daun yang mengandung "Saya string sederhana".
Rekatkan yang berikut ke bilah alamat untuk mengujinya.
Jika Anda ingin mengambil hanya "Saya adalah string sederhana" . Pertama bungkus teks dalam elemen seperti itu.
dan kemudian lakukan ini.
sumber
Jika Anda hanya ingin simpul yang paling dekat dengan teks yang Anda cari, Anda bisa menggunakan ini:
Ini bahkan akan berfungsi jika HTML Anda terlihat seperti ini:
Menggunakan pemilih di atas akan menemukan
<strong>
tag, karena itu adalah tag terakhir yang berisi seluruh string.sumber
<p>my text <b>my text</b></p>
- menghapus leluhur<b>
tag akan kalah pada pertandingan lainnyaLihatlah highlight (plugin jQuery).
sumber
Hanya menambahkan jawaban Tony Miller karena ini membuat saya 90% menuju apa yang saya cari tetapi masih tidak berhasil. Menambahkan
.length > 0;
ke akhir kodenya membuat skrip saya berfungsi.sumber
foundin += '*';
fungsi ini harus berfungsi. pada dasarnya melakukan pencarian rekursif sampai kita mendapatkan daftar node daun yang berbeda.
sumber