即使选择器与任何东西都不匹配,jQuery插件也会运行

时间:2013-03-25 20:35:13

标签: javascript jquery jquery-plugins

我写了一个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

1 个答案:

答案 0 :(得分:3)

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

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

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

alert('plugin run');
return this;