Menentukan apakah jQuery belum menemukan elemen apa pun


127

Saya menggunakan pemilih jQuery, terutama pemilih id:

$("#elementId")...

Bagaimana cara menentukan apakah jQuery telah menemukan elemen tersebut atau tidak? Bahkan jika elemen dengan id yang ditentukan tidak ada, pernyataan berikutnya memberi saya:[object Object]

alert($("#idThatDoesnotexist"));

Jawaban:


188

$('#idThatDoesnotexist').lengthadalah yang Anda cari. (Jika tidak menemukan apa-apa, ini akan === 0.) Jadi pernyataan bersyarat Anda mungkin harus:

if ($ ('# id'). length) {/ * code if found * /} else {/ * code if not found * /}

Anda mendapatkan objek yang dikembalikan dari peringatan itu karena jQuery (hampir) selalu mengembalikan "objek jQuery" saat Anda menggunakannya, yang merupakan pembungkus untuk elemen yang ditemukan jQuery yang memungkinkan perangkaian metode.


3
Anda tidak perlu nol, $ ('# id']. Length is enough (nol == false dalam javascript)
David Hellsing

13
@David fakta bahwa Anda tidak membutuhkannya tidak selalu membuatnya mubazir, sekilas IMO membuatnya lebih jelas.
Abir

1
@Abir: Ini hanya membuatnya lebih jelas sampai Anda terbiasa dengan sintaks tanpa itu, menguji kebenaran daripada secara eksplisit 0. Saya sarankan untuk membiasakan diri dengan sintaks tanpa == 0, Anda akan melihatnya di mana-mana.
Scott Stafford

@ScottStafford, untuk izin lebih banyak, Anda juga dapat menggunakan if (!!$('#id').length), yang melakukan cast boolean.
Daniele Vrut

6
Anda juga harus mempertimbangkan apakah manfaat dari menyimpan beberapa karakter menghilangkan potensi kebingungan ketika seseorang yang tidak terbiasa dengan nuansa Javascript membaca kode. Bukan praktik terbaik sejauh menyangkut pemeliharaan menurut pendapat saya.
Matt Carr

26

Futuraprime benar tetapi Anda dapat mempersingkat sintaks Anda dengan melakukan hal berikut:

if ($("#id").length) {
   //at least one element was found
} else {
   //no elements found
}

11
!$.isEmptyObject($.find('#id'))

Ini akan mengembalikan nilai true jika elemen ada dan false jika tidak.


7
$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined
$('#my_selector')[0] !== undefined

Ini dasar, sekarang lakukan apa pun yang Anda inginkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.