Saya mengalami kesulitan menemukan untuk mendapatkan DOMElement sebenarnya dari pemilih jquery. Kode sampel:
<input type="checkbox" id="bob" />
var checkbox = $("#bob").click(function() { //some code } )
dan di bagian kode lain saya mencoba menentukan nilai yang dicentang dari kotak centang.
if ( checkbox.eq(0).SomeMethodToGetARealDomElement().checked )
//do something.
Dan tolong, saya tidak ingin melakukan:
if ( checkbox.eq(0).is(":checked"))
//do something
Itu membuat saya berkeliling kotak centang, tapi di lain waktu saya membutuhkan DOMElement nyata.
javascript
jquery
dom
BillRob
sumber
sumber
applyBindings
mengharapkan simpul DOM bukan pemilih jQuery. Pertanyaan ini (dan jawabannya) adalah persis apa yang dibutuhkan.Jawaban:
Anda dapat mengakses elemen DOM mentah dengan:
atau lebih sederhana:
Sebenarnya tidak banyak yang Anda butuhkan untuk ini (dalam pengalaman saya). Ambil contoh kotak centang Anda:
lebih "jquery'ish" dan (imho) lebih ringkas. Bagaimana jika Anda ingin memberi nomor pada mereka?
Beberapa fitur ini juga membantu menutupi perbedaan di browser juga. Beberapa atribut dapat berbeda. Contoh klasiknya adalah panggilan AJAX. Untuk melakukan ini dengan benar dalam Javascript mentah memiliki sekitar 7 kasus fallback untuk
XmlHttpRequest
.sumber
$('a').get(0).nodeType==1
di Firebug di halaman ini, apakah itu mengevaluasi benar atau gagal?$('<input type=checkbox>').appendTo('body').get(0).checked
Sunting: sepertinya saya salah dengan menganggap Anda tidak bisa mendapatkan elemen. Seperti yang orang lain posting di sini, Anda bisa mendapatkannya dengan:
Saya telah memverifikasi ini benar-benar mengembalikan elemen DOM yang cocok.
sumber
Saya perlu mendapatkan elemen sebagai string.
Yang akan memberi Anda sesuatu seperti:
... sebagai string daripada elemen DOM.
sumber
Jika Anda perlu berinteraksi langsung dengan elemen DOM, mengapa tidak menggunakan saja
document.getElementById
sejak itu, jika Anda mencoba berinteraksi dengan elemen tertentu, Anda mungkin akan tahu id, dengan asumsi bahwa nama kelas hanya pada satu elemen atau beberapa opsi lain cenderung menjadi berisiko.Tapi, saya cenderung setuju dengan yang lain, bahwa dalam kebanyakan kasus Anda harus belajar untuk melakukan apa yang Anda butuhkan menggunakan apa yang jQuery berikan kepada Anda, karena sangat fleksibel.
UPDATE: Berdasarkan pada komentar: Berikut adalah posting dengan penjelasan yang bagus: http://www.mail-archive.com/[email protected]/msg04461.html
Ini akan mengembalikan nilai jika dicentang, atau 0 jika tidak.
$(this).val()
baru saja mencapai dom dan mendapatkan atribut "nilai" elemen, apakah itu diperiksa atau tidak.sumber