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"));
Bardock
sumber

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.

futuraprime
sumber
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
}
John Hartsock
sumber
11
!$.isEmptyObject($.find('#id'))

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

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

Ini dasar, sekarang lakukan apa pun yang Anda inginkan.

Blackjoker
sumber