繁体   English   中英

当jQuery与元素不匹配时使其抛出错误

[英]Make jQuery throw error when it doesn't match an element

通常,当我用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”的类时,如果尝试选择名为“foobar”的ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM