Apakah ini:
var contents = document.getElementById('contents');
Sama seperti ini:
var contents = $('#contents');
Mengingat bahwa jQuery dimuat?
javascript
jquery
jquery-selectors
Phillip Senn
sumber
sumber
Jawaban:
Tidak persis!!
Di jQuery, untuk mendapatkan hasil yang sama dengan
document.getElementById
, Anda dapat mengakses Objek jQuery dan mendapatkan elemen pertama di objek (Ingat objek JavaScript bertindak mirip dengan array asosiatif).sumber
document.getElementBy
tidak bekerja dengan benar di <IE8. Itu juga mendapat elemen olehname
karena itu Anda secara teoritis bisa berdebatdocument.getElementById
tidak hanya menyesatkan, tetapi dapat mengembalikan nilai yang salah. Saya pikir @John baru ini, tapi saya pikir tidak ada salahnya untuk menambahkannya.$('#'+id)[0]
tidak sama dengandocument.getElementById(id)
karenaid
dapat berisi karakter yang diperlakukan khusus di jQuery!jquery equivalent of document.getelementbyid
dan hasil pertama adalah posting ini. Terima kasih!!!$('#contents')[0].id
mengembalikan nama id.Tidak.
Memanggil
document.getElementById('id')
akan mengembalikan objek DOM mentah.Memanggil
$('#id')
akan mengembalikan objek jQuery yang membungkus objek DOM dan menyediakan metode jQuery.Dengan demikian, Anda hanya dapat memanggil metode jQuery seperti
css()
atauanimate()
pada$()
panggilan.Anda juga bisa menulis
$(document.getElementById('id'))
, yang akan mengembalikan objek jQuery dan setara dengan$('#id')
.Anda bisa mendapatkan objek DOM yang mendasarinya dari objek jQuery dengan menulis
$('#id')[0]
.sumber
In one sentence, DOM objects are the objects that the web browser is using to render elements on the web page whereas jQuery objects are basically wrapper objects around a set of DOM elements.
Tutup, tapi tidak sama. Mereka mendapatkan elemen yang sama, tetapi versi jQuery dibungkus dengan objek jQuery.
Setara dengan ini
atau ini
Ini akan menarik elemen keluar dari objek jQuery.
sumber
Catatan tentang perbedaan kecepatan. Lampirkan snipet berikut ke panggilan onclick:
Bergantian mengomentari salah satu dan kemudian mengomentari yang lain. Dalam tes saya,
Di sisi lain,
Tentu saja, itu lebih dari
10000
iterasi sehingga dalam situasi yang lebih sederhana saya mungkin akan menggunakan jQuery untuk kemudahan penggunaan dan semua hal keren lainnya seperti.animate
dan.fadeTo
. Tapi ya, secara teknisgetElementById
sedikit lebih cepat .sumber
$('#someID')
dengandocument.getElementById("someID")
? Saya sedang mengerjakan sesuatu yang telah saya gunakan secara luas$('#someID')
dan halaman saya berjalan lambat untuk input file besar. Tolong sarankan saya apa yang harus saya pindah.var $myId = $('#myId');
dan gunakan kembali variabel yang disimpan$myId
. Menemukan id biasanya cukup cepat, jadi jika halamannya lamban, mungkin ada alasan lain.Tidak. Yang pertama mengembalikan elemen DOM, atau null, sedangkan yang kedua selalu mengembalikan objek jQuery. Objek jQuery akan kosong jika tidak ada elemen dengan id
contents
yang cocok.Elemen DOM yang dikembalikan oleh
document.getElementById('contents')
memungkinkan Anda untuk melakukan hal-hal seperti mengubah.innerHTML
(atau.value
) dll, namun Anda harus menggunakan metode jQuery pada Obyek jQuery.Lebih equivilent, namun jika tidak ada elemen dengan id
contents
yang cocok,document.getElementById('contents')
akan mengembalikan nol, tetapi$('#contents').get(0)
akan kembali tidak terdefinisi.Satu manfaat menggunakan objek jQuery adalah Anda tidak akan mendapatkan kesalahan jika tidak ada elemen yang dikembalikan, karena objek selalu dikembalikan. Namun Anda akan mendapatkan kesalahan jika Anda mencoba melakukan operasi pada yang
null
dikembalikan olehdocument.getElementById
sumber
Tidak, sebenarnya hasil yang sama adalah:
jQuery tidak tahu berapa banyak hasil yang akan dikembalikan dari permintaan. Apa yang Anda dapatkan kembali adalah objek jQuery khusus yang merupakan kumpulan dari semua kontrol yang cocok dengan kueri.
Bagian dari apa yang membuat jQuery begitu mudah adalah bahwa metode PALING memanggil objek ini yang terlihat seperti dimaksudkan untuk satu kontrol, sebenarnya dalam satu lingkaran yang dipanggil pada semua anggota dalam koleksi
Saat Anda menggunakan sintaks [0], Anda mengambil elemen pertama dari koleksi dalam. Pada titik ini Anda mendapatkan objek DOM
sumber
Jika ada orang lain yang memukul ini ... Inilah perbedaan lain:
Jika id berisi karakter yang tidak didukung oleh standar HTML (lihat pertanyaan SO di sini ) maka jQuery mungkin tidak menemukannya bahkan jika getElementById melakukannya.
Ini terjadi pada saya dengan id yang berisi karakter "/" (mis: id = "a / b / c"), menggunakan Chrome:
dapat menemukan elemen saya tetapi:
tidak.
Btw, perbaikan sederhana adalah memindahkan id itu ke bidang nama. JQuery tidak kesulitan menemukan elemen menggunakan:
sumber
Seperti kebanyakan orang katakan, perbedaan utama adalah fakta bahwa ia dibungkus dalam objek jQuery dengan panggilan jQuery vs objek DOM mentah menggunakan JavaScript lurus. Objek jQuery akan dapat melakukan fungsi jQuery lain dengan itu tentu saja tetapi, jika Anda hanya perlu melakukan manipulasi DOM sederhana seperti gaya dasar atau penanganan acara dasar, metode JavaScript lurus selalu sedikit lebih cepat daripada jQuery karena Anda tidak t harus memuat di perpustakaan eksternal kode yang dibangun di JavaScript. Ini menyimpan langkah ekstra.
sumber
var contents = document.getElementById('contents');
var contents = $('#contents');
Cuplikan kode tidak sama. pertama mengembalikan
Element
objek ( sumber ). Yang kedua, setara jQuery akan mengembalikan objek jQuery yang berisi kumpulan elemen DOM nol atau satu. ( dokumentasi jQuery ). Secara internal jQuery menggunakandocument.getElementById()
efisiensi.Dalam kedua kasus jika lebih dari satu elemen ditemukan hanya elemen pertama yang akan dikembalikan.
Saat memeriksa proyek github untuk jQuery, saya menemukan cuplikan baris berikut yang tampaknya menggunakan kode document.getElementById ( https://github.com/jquery/jquery/blob/master/src/core/init.js baris 68 dan seterusnya)
sumber
Satu perbedaan lain:
getElementById
mengembalikan kecocokan pertama , sementara$('#...')
mengembalikan koleksi kecocokan - ya, ID yang sama dapat diulang dalam dokumen HTML.Selanjutnya,
getElementId
dipanggil dari dokumen, sementara$('#...')
dapat dipanggil dari pemilih. Jadi, dalam kode di bawah ini,document.getElementById('content')
akan mengembalikan seluruh tubuh tetapi$('form #content')[0]
akan kembali ke dalam formulir.Mungkin aneh menggunakan duplikat ID, tetapi jika Anda menggunakan sesuatu seperti Wordpress, templat atau plugin mungkin menggunakan id yang sama seperti yang Anda gunakan dalam konten. Selektivitas jQuery dapat membantu Anda di luar sana.
sumber
jQuery dibangun di atas JavaScript. Ini berarti bahwa itu hanya javascript saja.
document.getElementById ()
Jquery $ ()
sumber
Saya mengembangkan basis data noSQL untuk menyimpan pohon DOM di Browser Web di mana referensi ke semua elemen DOM pada halaman disimpan dalam indeks singkat. Dengan demikian fungsi "getElementById ()" tidak diperlukan untuk mendapatkan / memodifikasi elemen. Ketika elemen-elemen dalam pohon DOM dipakai pada halaman database memberikan pengganti kunci utama untuk setiap elemen. Ini adalah alat gratis http://js2dx.com
sumber
Semua jawaban di atas benar. Jika Anda ingin melihatnya beraksi, jangan lupa Anda memiliki Konsol di peramban tempat Anda dapat melihat hasil sebenarnya sebening kristal:
Saya punya HTML:
Pergi ke konsol
(cntrl+shift+c)
dan gunakan perintah ini untuk melihat hasil Anda dengan jelasSeperti yang dapat kita lihat, dalam kasus pertama kita mendapatkan tag itu sendiri (yaitu, sebenarnya, objek HTMLDivElement). Dalam yang terakhir kita sebenarnya tidak memiliki objek polos, tetapi berbagai objek. Dan seperti yang disebutkan oleh jawaban lain di atas, Anda dapat menggunakan perintah berikut:
sumber
Semua jawaban sudah tua hari ini pada 2019 Anda dapat langsung mengakses id keyed javascript hanya dengan mencobanya
Demo online! - https://codepen.io/frank-dspeed/pen/mdywbre
sumber