通常,当我用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