3

例如,如果我使用此代码:$('#iddoesnotexist').remove();如果此 id 不在页面中,我将不会收到错误,如何显示错误?

默认情况下选择了这种行为,因为否则 jQuery 会定期抛出NullReference异常,但这是我正在寻找的......

4

3 回答 3

7

我想你可以创建自己的 jQuery 扩展。我会*把它写成一个断言:

$.fn.mustExist = function() {
    if(!this.length) {
        throw new Error("Collection was empty.");
    }

    return this;
};

在开发过程中:

$('#iddoesnotexist').mustExist().remove();

* 实际上,我不会使用 jQuery;document.getElementById也保护你免受这种事情;)

于 2012-07-05T00:35:20.163 回答
1

如果您希望此行为成为所有 DOM 选择的默认行为,您可以为该函数创建一个包装jQuery函数。

var my_$ = function(selector) {
    var result = jQuery.apply(this, arguments);

    if (typeof selector === "string" && !result.length)
        throw new Error("No matches found");

    return result;               
};

my_$("#foobar"); // No matches found

请务必使用您自己的引用,而不是覆盖jQueryor$标识符。

于 2012-07-05T00:44:16.153 回答
0

看:

jQuery 调试http://jqueryfordesigners.com/debugging-tools/http://www.jquery4u.com/utilities/live-jquery-debugging-firebug/http://samdutton.wordpress.com/2010/09 /16/jquery-debugging-tips/http://trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug/

用于 jQuery 调试文章。而且,正如评论中提到的,最简单的调试方法是使用console.log.

于 2012-07-05T00:35:22.877 回答