JQuery'nin herhangi bir öğe bulup bulmadığını belirleme


127

JQuery'nin seçicilerini, özellikle kimlik seçiciyi kullanıyorum:

$("#elementId")...

JQuery'nin öğeyi bulup bulmadığını nasıl belirleyebilirim? Belirtilen kimliğe sahip öğe olmasa bile, sonraki ifade bana şunu verir:[object Object]

alert($("#idThatDoesnotexist"));

Yanıtlar:


188

$('#idThatDoesnotexist').lengtharadığınız şey. (Hiçbir şey bulamazsa, bu olur === 0.) Yani koşullu ifadeniz muhtemelen şöyle olmalıdır:

eğer ($ ['# id']. length) {/ * bulunursa kod * /} aksi takdirde {/ * bulunamazsa kod * /}

Bu uyarıdan döndürülen bir nesneyi alıyorsunuz çünkü jQuery (neredeyse) onu kullandığınızda her zaman "jQuery nesnesini" döndürür, jQuery'nin bulduğu, yöntem zincirlemesine izin veren öğeler için bir sarmalayıcıdır.


3
Sıfıra ihtiyacınız yok, $ ('# id']. Uzunluk yeterli (sıfır == javascript'te false)
— David Hellsing

13
@David, İhtiyacınız olmadığı gerçeği onu gereksiz kılmaz, ilk bakışta IMO daha net hale getirir.
— Abir

1
@Abir: O olmadan sözdizimine alışana kadar, açık bir şekilde 0 yerine doğruluk için test edene kadar daha açık hale getiriyor == 0.
— Scott Stafford

@ScottStafford, daha fazla açıklık için, if (!!$('#id').length)boolean döküm yapan da kullanabilirsiniz .
— Daniele Vrut

6
Javascript'in nüanslarına aşina olmayan biri kodu okuduğunda, birkaç karakter kaydetmenin faydalarının olası kafa karışıklığını giderip dengelemediğini de düşünmelisiniz. Bence sürdürülebilirlik söz konusu olduğunda en iyi uygulama değil.
— Matt Carr

26

Futuraprime doğrudur, ancak aşağıdakileri yaparak sözdiziminizi kısaltabilirsiniz:

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

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

Bu, öğe varsa doğru, yoksa yanlış döndürür.


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

Bu temeldir, şimdi ne istersen onu yap.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.