Yanıtlar:
JQuery SSS bölümünü kontrol edin ...
Seçiciniz tarafından döndürülen jQuery koleksiyonunun length özelliğini kullanabilirsiniz:
if ( $('#myDiv').length ){}
lenght
yerine length
; bir yazım hatası.
.length
.
(Cevabı oylamak için yeterli itibara sahip olmadığım için ...)
Wolf şunu yazdı:
Undefined veya null bir nesnede length özelliği çağrıldığında IE ve webkit tarayıcıları başarısız olur!
Bunun yerine şunu deneyin:
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something }
veya
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don't do something }
Undefined veya null bir nesnede length özelliğinin çağrılmasının tarayıcıların başarısız olmasına neden olacağı doğru olsa da, jQuery seçicilerinin ($ ('...')) sonucu asla null veya undefined olmaz. Dolayısıyla kod önerileri bir anlam ifade etmiyor. Diğer cevaplardan birini kullanın, daha mantıklı.
(Güncelleme 2012) İnsanlar koda baktığından ve bu cevap listenin oldukça üstünde olduğundan: Son birkaç yıldır bu küçük eklentiyi kullanıyorum:
jQuery.fn['any'] = function() {
return (this.length > 0);
};
Bence $ ('div'). Any () $ ('div'). Uzunluğundan daha iyi okur , ayrıca yazım hatalarından çok fazla acı çekmezsiniz: $ ('div'). Ayn () bir çalışma zamanı hatası verir , $ ('div'). uzunluk sessizce büyük olasılıkla daima sahteler.
__
Kasım 2012 düzenlemeleri:
1) İnsanlar koda bakma ve kod etrafında söylenenleri okuma eğiliminde olduğu için, alıntılanan Wolf koduna iki büyük uyarı notu ekledim.
2) Bu durum için kullandığım küçük eklentinin kodunu ekledim.
Arama işlevi, eşleşen bir dizi öğe döndürür. Uzunluğun sıfır olup olmadığını kontrol edebilirsiniz. Öğelere yalnızca bir kez bakma ve sonuçları gerektiği gibi yeniden kullanma değişikliğine dikkat edin.
var elem = $("#btext" + i);
if (elem.length != 0) {
elem.text("Branch " + i);
}
Ayrıca, sadece metin işlevini kullanmayı denediniz mi - öğe yoksa, hiçbir şey yapmaz.
$("#btext" + i).text("Branch " + i);
jquery $ () işlevi her zaman null olmayan değer döndürür - seçici cretaria ile eşleşen ortalama öğeler. Öğe bulunamadığı takdirde boş bir dizi döndürür. Kodunuz şöyle görünecek -
if ($("#btext" + i).length){
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
JQuery 1.4'te $ .isEmptyObject işlevini alırsınız, ancak bizim gibi zayıf Drupal geliştiricileri gibi jQ'nun eski bir sürümünü kullanmak zorunda kalırsanız, sadece bu kodu kullanın:
// This is a function similar to the jQuery 1.4 $.isEmptyObject.
function isObjectEmpty(obj) {
for ( var name in obj ) {
return false;
}
return true;
}
Gibi kullanın:
console.log(isObjectEmpty(the_object)); // Returns true or false.
Seçiminiz ne olursa olsun, işlev $()
her zaman bir jQuery nesnesi döndürür, böylece test etmek için kullanılamaz. Şimdiye kadarki en iyi yol (sadece değilse), size()
yukarıda açıklandığı gibi işlevi veya yerel uzunluk özelliğini kullanmaktır .
if ( $('selector').size() ) {...}
if ( $('#whatever')[0] ) {...}
Tüm yerel jQuery yöntemleri tarafından döndürülen jQuery nesnesi bir dizi DEĞİLDİR, birçok özelliğe sahip bir nesnedir; bunlardan biri "uzunluk" özelliği. Ayrıca boyut () veya get (0) alabilir veya get () - 'get (0)', ilk öğeye erişmeyle aynı şekilde çalışır, yani $ (elem) [0]
"Undefined" kullanmaya ne dersiniz?
if (value != undefined){ // do stuff }
$("#selector").get(0)
bu şekilde null ile kontrol etmek için kullanın . get, dom özelliğini döndürür, o zamana kadar length özelliğini kontrol etmeniz gereken bir dizi ile uğraşırsınız. Şahsen null kullanım için uzunluk kontrolünü sevmiyorum, nedense beni karıştırıyor :)
Length özelliğini kullanarak bunu yapabilirsiniz.
jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) {
//do somthing
}