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.