2011-09-02 20 views
10

jQuery için yeni ve bulamadığı öğelerin işlenmesini basitleştirmek istiyorum, ki bu oldukça yaygın bir sorundur.Bir öğe bulunamadığında jQuery bir istisna atmak mümkün mü?

var category = $('select#Category'); 

Şimdi, o bulunamadığı takdirde iade değişken görmek inceleyebilir, ama kesinlikle bir istisna bu durumda otomatik olarak atılan tercih ediyorum: Aşağıdaki kod ne demek gösterir. Bu jQuery ile mümkün mü? Değilse, jQuery'nin üstünde otomatik kontrol kontrolü yapmak için bazı ortak deyimler var mı?

cevap

12

bunu yapmak için varolan herhangi işlevselliği emin değilim ama jQuery kullanmadan önce sayfanın üst kısmında koyarsanız bu sizin için çalışması gerektiğini düşünüyorum, ama bunu yükledikten sonra:

(function(){ 
    var _$ = $; 
    $ = function(){ 
     var $res = _$.apply(0, arguments); 
     if(!$res.length && typeof arguments[0] === 'string') 
      throw 'No element Found: ' + arguments[0]; 
     return $res; 
    } 
    $ = _$.extend(true, $, _$); 
})(); 

JSFiddle Example

ben sadece bu yaklaşımı kullanmak
+0

İyileştirme: Atış satırını 'atmak' olarak değiştirin. Eleman Bulunamadı: '+ arguments [0]; 've seçicinin hataya neden olduğunu görebilirsiniz. – Jamiec

+0

@Jamiec Teşekkürler, bu hoş bir özellik :) – Paulpro

+0

Aslında, şimdi bu çözümle ilgili gerçek bir sorun görüyorum. Bu işlevin $ değerini değiştirdikten sonra jQuery API'sine _ $ olarak erişmeliyim. Örneğin: _ $. İstisna-atıcı sarıcı yerine _ $ yerine getirmek için çözümü değiştirmeye ne dersiniz? Tamamen dolacağı takdirde, tanımlanmamış değişkenleri kontrol etmek için _ $() öğesini çağırmayı tercih ederim. – aknuds1

2

:

if (category.length == 1) { 
// node has been found (and is the only one in the dom) 
} 

bir istisna atma iyi bir fikir olmadığını düşünüyorum: P

+0

Belki de JavaScript ile ilgili istisnalar hakkında haklısın. ama her değişkeni açıkça kontrol etmekten nefret ediyorum. Dönüş değerlerini otomatik olarak belirten hataların ele alınmasında makroları tanımlayacağım C'deki gibi. – aknuds1

+0

@ aknuds1 daveoncode doğrudur. Yakalanmamış istisnalar Javascript'teki hatalardır ve yürütmenin durdurulmasına neden olur. Bu yüzden istisnalar kullanmışsanız, 'catch' komutunu her yerde engellemelisiniz. JSFIddle örneğimi, yakalanmamış bir istisnadan sonra bir kod satırına asla ulaşılmadığını göstermek için güncelledim: http://jsfiddle.net/Paulpro/P87Cp/ – Paulpro

+0

@PaulPRO Bu, diğer dillerden farklı değil. Faydası, tüm tanımlanmamış değişkenleri tek bir işlev içinde tek bir yerde (yakalama bloğu) halledebilmem. – aknuds1

İlgili konular