Javascript 使jQuery在不运行时抛出错误';不匹配元素
通常,当我使用jQuery选择一个元素时,如果它没有找到匹配的元素,我希望它给我一个错误 例如,我刚刚遇到一个错误,因为我更改了Javascript 使jQuery在不运行时抛出错误';不匹配元素,javascript,jquery,dom,jquery-selectors,Javascript,Jquery,Dom,Jquery Selectors,通常,当我使用jQuery选择一个元素时,如果它没有找到匹配的元素,我希望它给我一个错误 例如,我刚刚遇到一个错误,因为我更改了ul元素的类,所以失败了: $('ul.some-list').append(listItem) 是否有一种方便的方法来确保我的jQuery调用与元素匹配?您可以制作一个插件来确保jQuery对象不是空的: $.fn.ensure = function() { if (this.length === 0) throw "Empty jQuery result."
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开发人员深思熟虑的决定。这意味着您可以将一些代码应用于元素集合,即使可能没有。一个很好的例子是页面上的注释或复选框。如果在找不到WAE元素时抛出错误,则必须向代码中添加存在性检查。以下主题包含更多信息:
这是保持生产代码精简的重要特性。然而,如果你犯了一个小错误,它真的会在开发过程中咬你的屁股;或者,如果您在应该选择一个名为“foobar”的类时尝试选择一个名为“foobar”的ID。您可以使用类似的方法,这是一个快速简单的解决方案!