0

我写了一个 jQuery 插件,一切看起来都很好,直到我在一个不存在的 DOM 元素上运行我的插件。我期待警报框不会弹出,因为$("#div1")会返回空集

html

<div id="div2">hello</div>

javascript

(function($){
    $.fn.extend({myPlugin1: function(options){
        alert('plugin run');
        return this;
    }    
    });
})(jQuery);

$("#div1").myPlugin1();

jsfiddle

请注意,当插件在div1上调用时,DOM 元素的 id为div2

4

1 回答 1

3

您的插件扩展了 jQuery 对象。一个空的选择器仍然返回一个 jQuery 对象,所以它仍然会运行。

如果你想检查选择器是否匹配任何东西,你必须明确地这样做:

if (this.length == 0) return this;

alert('plugin run');
return this;
于 2013-03-25T20:37:42.090 回答