Saya seorang pemula jQuery dan saat mempelajari beberapa contoh kode yang saya temukan:
$(document.body)
dan $('body')
Apakah ada perbedaan antara keduanya?
jquery
document
document-body
ashleedawg.dll
sumber
sumber
$(body)
tidak berfungsi untuk.on('click'...
acara, sedangkan$(document.body)
dan$(document)
keduanya berfungsi.Jawaban:
Mereka merujuk ke elemen yang sama, perbedaannya adalah ketika Anda mengatakan
document.body
Anda meneruskan elemen tersebut langsung ke jQuery. Alternatifnya, ketika Anda meneruskan string'body'
, mesin pemilih jQuery harus menafsirkan string untuk mencari tahu elemen apa yang dirujuknya.Dalam praktiknya, keduanya akan menyelesaikan pekerjaan.
Jika Anda tertarik, ada lebih banyak informasi di dokumentasi untuk fungsi jQuery .
sumber
Jawabannya di sini sebenarnya tidak sepenuhnya benar. Dekat, tapi ada casing tepi.
Perbedaannya adalah bahwa $ ('body') sebenarnya memilih elemen dengan nama tag, sedangkan document.body mereferensikan objek langsung pada dokumen.
Itu berarti jika Anda (atau skrip jahat) menimpa elemen document.body (malu!) $ ('Body') akan tetap berfungsi, tetapi $ (document.body) tidak akan. Jadi menurut definisi mereka tidak setara.
Saya berani menebak ada kasus tepi lain (seperti elemen id'ed global di IE) yang juga akan memicu jumlah elemen tubuh yang ditimpa pada objek dokumen, dan situasi yang sama akan berlaku.
sumber
document.body
ke apa pun selain<body>
: i.imgur.com/unJVwXy.pngSaya menemukan perbedaan waktu yang cukup besar saat menguji di browser saya.
Saya menggunakan skrip berikut:
Saya melakukan 10 juta interaksi, dan itulah hasilnya (Chrome 65):
Meneruskan elemen secara langsung sekitar 4 kali lebih cepat daripada melewatkan selektor.
sumber
$(document.body)
menggunakan referensi globaldocument
untuk mendapatkan referensi kebody
, sedangkan$('body')
selektor di mana jQuery akan mendapatkan referensi ke<body>
elemen didocument
.Tidak ada perbedaan besar yang dapat saya lihat, tidak ada peningkatan kinerja yang nyata dari satu ke yang lain.
sumber
$(document.body)
jauh lebih cepat menurut artikel ini: sitepoint.com/jquery-body-on-document-onSeharusnya tidak ada perbedaan sama sekali mungkin yang pertama sedikit lebih berkinerja tetapi menurut saya itu sepele (Anda tidak perlu khawatir tentang ini, sungguh).
Dengan keduanya Anda membungkus
<body>
tag dalam objek jQuerysumber
Keluaran keduanya setara. Meskipun ekspresi kedua melalui pencarian dari atas ke bawah dari root DOM. Anda mungkin ingin menghindari biaya tambahan (betapapun kecilnya) jika Anda sudah memiliki objek document.body di tangan untuk JQuery untuk menyelesaikannya. Lihat http://api.jquery.com/jQuery/ #Selector Context
sumber