Saya memiliki string HTML besar yang berisi banyak node anak.
Apakah mungkin untuk membangun jQuery objek DOM menggunakan string ini?
Saya sudah mencoba $(string)
tetapi hanya mengembalikan array yang berisi semua node individual.
Mencoba untuk mendapatkan elemen yang bisa saya gunakan fungsi .find () di.
javascript
jquery
html
pengguna1033619
sumber
sumber
Jawaban:
Memperbarui:
Dari jQuery 1.8, kita bisa menggunakan $ .parseHTML , yang akan mem-parsing string HTML ke array node DOM. misalnya:
DEMO
DEMO
Apa yang terjadi dalam kode ini:
$('<div/>')
adalah palsu<div>
yang tidak ada di DOM$('<div/>').html(string)
menambahkanstring
dalam palsu itu<div>
sebagai anak-anak.contents()
mengambil anak-anak palsu itu<div>
sebagai objek jQueryJika Anda ingin
.find()
bekerja maka coba ini:DEMO
sumber
.find()
operasi juga, periksa demostring = '<input type="text" value="val" />'
$("<div/>")
, mengapa Anda tidak bisa melakukannya$(string)
?Pada jQuery 1.8 Anda bisa menggunakan parseHtml untuk membuat objek jQuery Anda:
Saya telah membuat JSFidle yang menunjukkan ini: http://jsfiddle.net/MCSyr/2/
Ini mem-parsing string HTML yang berubah-ubah menjadi objek jQuery, dan menggunakan find untuk menampilkan hasilnya dalam div.
sumber
Ini menciptakan objek jQuery dummy di mana Anda bisa meletakkan string sebagai HTML. Kemudian, Anda mendapatkan anak-anak saja.
sumber
.filter()
sebagai ganti.find()
.Ada juga perpustakaan hebat bernama cheerio yang dirancang khusus untuk ini.
sumber
Saya menggunakan yang berikut ini untuk templat HTML saya:
Catatan: Dengan asumsi jika Anda menggunakan jQuery
sumber
alasan mengapa $ (string) tidak berfungsi adalah karena jquery tidak menemukan konten html antara $ (). Karena itu Anda harus menguraikannya terlebih dahulu ke html. setelah Anda memiliki variabel di mana Anda telah menguraikan html. Anda kemudian dapat menggunakan $ (string) dan menggunakan semua fungsi yang tersedia pada objek
sumber