Apa cara terbaik untuk mendeteksi jika pemilih-jQuery mengembalikan objek kosong. Jika kamu melakukan:
alert($('#notAnElement'));
Anda mendapatkan [Objek objek], jadi cara saya melakukannya sekarang adalah:
alert($('#notAnElement').get(0));
yang akan menulis "tidak terdefinisi", sehingga Anda dapat melakukan pemeriksaan untuk itu. Tapi sepertinya sangat buruk. Ada cara lain apa?
jquery
jquery-selectors
peirix
sumber
sumber
this
jauh lebih bermanfaat daripadatrue
. Lihat jawaban sayapresence
metode porting Rails ' .this
ke variabel, saya akan merekomendasikan mengubah pernyataan kembali ke apa yang dimiliki CSharp .sumber
Selector mengembalikan array objek jQuery. Jika tidak ada elemen yang cocok ditemukan, itu mengembalikan array kosong. Anda dapat memeriksa
.length
koleksi yang dikembalikan oleh pemilih atau memeriksa apakah elemen array pertama 'tidak terdefinisi'.Anda dapat menggunakan salah satu contoh berikut dalam sebuah pernyataan IF dan mereka semua menghasilkan hasil yang sama. Benar, jika pemilih menemukan elemen yang cocok, salah jika sebaliknya.
sumber
.length
kecuali kodenya panas. Tentunya yang paling jelas dengan niat. Juga,.size()
sudah usang dan telah bertahun-tahun (sejak 1.8). Saya hanya akan mengedit jawaban Anda dan menghapusnya, jangan ragu untuk menambahkannya kembali dengan catatan tetapi sudah sangat tua, saya pikir itu lebih baik hilang.Saya suka melakukan sesuatu seperti ini:
Jadi, Anda dapat melakukan sesuatu seperti ini:
http://jsfiddle.net/vhbSG/
sumber
TypeError: firstExistingElement.doSomething is not a function
. Anda dapat membungkus seluruh penugasan variabel / tes dalam if () dan hanya melakukan sesuatu jika elemen ditemukan ....Saya suka menggunakan
presence
, terinspirasi dari Ruby on Rails :Contoh Anda menjadi:
Saya merasa lebih unggul daripada yang diusulkan
$.fn.exists
karena Anda masih dapat menggunakan operator boolean atauif
, tetapi hasil yang sebenarnya lebih bermanfaat. Contoh lain:sumber
Preferensi saya, dan saya tidak tahu mengapa ini belum ada di jQuery:
Digunakan seperti ini:
Atau, seperti yang terlihat di CoffeeScript:
sumber
Ini ada dalam dokumentasi JQuery:
http://learn.jquery.com/using-jquery-core/faq/how-do-i-test-whether-an-element-exists/
sumber
Anda mungkin ingin melakukan ini sepanjang waktu secara default. Saya telah berjuang untuk membungkus fungsi jquery atau metode jquery.fn.init untuk melakukan ini tanpa kesalahan, tetapi Anda dapat membuat perubahan sederhana ke sumber jquery untuk melakukan ini. Termasuk beberapa garis di sekitarnya yang dapat Anda cari. Saya sarankan mencari sumber jquery
The jQuery object is actually just the init constructor 'enhanced'
Terakhir, Anda dapat memperoleh kode sumber jquery yang tidak terkompresi di sini: http://code.jquery.com/
sumber