jQuery插件运行,即使选择器没有匹配任何东西

jQuery plugin run even though selector didn't match anything

本文关键字:任何东 选择器 运行 插件 jQuery      更新时间:2023-09-26

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

注意DOM元素的id为div2,而插件是在div1上调用的。

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

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

if (this.length == 0) return this;
alert('plugin run');
return this;