jQuery插件运行,即使选择器没有匹配任何东西
jQuery plugin run even though selector didn't match anything
我写了一个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;
相关文章:
- jQuery选择器不识别任何动态创建的HTML输入函数
- jQuery:append()不是't在选择器中插入任何元素
- 是否有任何函数可以帮助转义 jQuery 选择器中包含的所有元字符?
- 仅使用任何简单选择器先进行选择
- 从任何jquery选择器字符串创建元素的最有效方法
- 选择器“app”与任何元素都不匹配
- 在我的情况下,任何使用 * 的选择器都失败了
- 存在作为始终可见列表选择器的任何 HTML 表单小部件
- 哪个查询选择器可以找到与另一个数组中的任何项匹配的任何数组项
- 为什么这个jQuery选择器没有选择任何内容
- 如果未选择任何选择器选项,则禁用“提交”按钮
- 有没有一种方法可以使用“on”上的事件来执行函数;给定数组中的任何选择器”;
- 选择器"相对路径"没有匹配任何元素
- 使用选择器在任何地方选择用户名
- 不能对通过类选择器检索到的元素做任何事情
- jQuery插件运行,即使选择器没有匹配任何东西
- 创建可用于任何选择器的自定义事件
- Dropbox API选择器与JS从localhost: Origin不匹配任何应用程序域
- 如何使用Sly(或任何其他选择器引擎)来设置事件处理程序
- 如何通过jquery中的选择器跳过任何表列