通常,當我用jQuery選擇一個元素時,如果它找不到匹配元素,我寧願它給我一個錯誤。當它與元素不匹配時,使jQuery拋出錯誤
舉例來說,我只是有一個錯誤在那裏這失敗,因爲我改變了類ul
元素:
$('ul.some-list').append(listItem)
是否有保證,我的jQuery的電話匹配的元素一個方便的方法?
通常,當我用jQuery選擇一個元素時,如果它找不到匹配元素,我寧願它給我一個錯誤。當它與元素不匹配時,使jQuery拋出錯誤
舉例來說,我只是有一個錯誤在那裏這失敗,因爲我改變了類ul
元素:
$('ul.some-list').append(listItem)
是否有保證,我的jQuery的電話匹配的元素一個方便的方法?
你可以做一個插件來使用,以確保jQuery對象不爲空:
$.fn.ensure = function() {
if (this.length === 0) throw "Empty jQuery result."
return this;
}
用法:
$('ul.some-list').ensure().append(listItem);
這是一個快速和簡單的解決方案! –
就我而言,我想它會自動應用到一切,所以我修改了jQuery構造函數。我建議你在開發過程中只使用它來捕捉錯誤,但不要將它放在生產環境中,以免混淆他人。因爲這不是錯誤,所以我剛剛使用了控制檯日誌記錄。不過我的情況下添加一個註釋掉扔你寧願使用:
var jQueryInit = $.fn.init;
$.fn.init = function(arg1, arg2, rootjQuery) {
var element = new jQueryInit(arg1, arg2, rootjQuery);
if (arg1 && element.length === 0) {
console.log(arg1 +" doesn't exist");
// throw arg1 +" doesn't exist"
}
return element;
};
我真的希望有jQuery中用於開發過程中把這個上的選項。
如果有人想知道......讓選擇器返回一個結果集,當沒有有效的匹配時,這是jQuery開發人員的一個慎重決定。這意味着您可以將一些代碼應用於一組元素,即使有可能沒有。一個很好的例子是在頁面上發表評論,或選中複選框。如果在沒有找到元素的情況下拋出錯誤,那麼您必須爲代碼添加存在檢查。以下主題有更多信息: https://stackoverflow.com/a/3709823/109561
這是保持精益生產代碼的強大功能。然而,如果你犯了一個小錯誤,它可以在發展中真正地咬你;或者如果您嘗試選擇名爲「foobar」的ID,則應選擇名爲「foobar」的課程。
你可以使用像http://stackoverflow.com/questions/3709604/why-doesnt-jquery-bomb-if-your-selector-object-is-invalid/3709634#3709634 – Dogbert