Javascript 使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."

通常,当我使用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开发人员深思熟虑的决定。这意味着您可以将一些代码应用于元素集合,即使可能没有。一个很好的例子是页面上的注释或复选框。如果在找不到WAE元素时抛出错误,则必须向代码中添加存在性检查。以下主题包含更多信息:


这是保持生产代码精简的重要特性。然而,如果你犯了一个小错误,它真的会在开发过程中咬你的屁股;或者,如果您在应该选择一个名为“foobar”的类时尝试选择一个名为“foobar”的ID。

您可以使用类似的方法,这是一个快速简单的解决方案!