jQuery 插件中的事件委托
Event delegation in jQuery plugin
如何从jQuery插件初始化中获取选择器字符串,用于事件委托。
这是一个简单的案例:
(function($){
$.fn.pluginTest = function(){
$(document).on("click", this, function(e){
// action here
});
}
}(jQuery));
上面的代码将不起作用,因为.on选择器类型需要是字符串。所以问题是如何在插件初始化中获取选择器。
$(".box").pluginTest()
例如,如何获得.box
。我一直在搜索这个,有些人建议使用 .selector,但现在它已被弃用并删除。
可以使用 .selector
将事件处理程序添加到目标选择器。
JS代码:
$(document).on("click",this.selector, function(e) {
alert('You clicked me!!!');
});
现场演示 @ JSFiddle
在上面的示例中,当您单击 .bigBox
时,您不会收到任何警报,并且您只会在.box
收到警报,因为事件处理程序通过其选择器绑定到目标元素。
实际上有数百页专门用于扩展jQuery。 您尚未解释为什么以下内容不适用于您的插件:
(function($){
$.fn.pluginTest = function(){
this.on("click", this, function(e){
// action here
});
return this;
}
}(jQuery));
例如:
(function($){
$.fn.pluginTest = function(){
this.on("click", this, function(e){
$(this).toggleClass('red');
});
return this;
}
}(jQuery));
$('.box').pluginTest();
.red { background-color: red; }
.box { cursor: pointer; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="box">Box 1</div>
<div class="box">Box 2</div>
<div class="box">Box 3</div>
相关文章:
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 在插件中分配事件
- JQuery facebook订阅插件鼠标事件
- CSS + jQ插件阻止AJAX调用/事件侦听器工作
- 使用所选插件更改动态添加的选择上的事件
- 有没有一种方法可以重新绑定jQuery插件中引用的事件处理程序
- 自定义jQuery插件:事件未按预期运行
- Jquery插件绑定更改事件
- 如何使用show hint插件在CodeMirror中订阅选择事件
- 在第三次onPageClick事件后,使用twbspagination插件和AJAX更新JS分页
- jQuery有没有,或者有没有jQuery插件,内置了监听CSS3动画事件的功能(例如animationEnd)
- jQuery插件的自定义事件与回调
- 可以't在我的Firefox插件中触发点击事件
- 如何在我的自定义插件中绑定调整大小事件
- 如何将自定义事件添加到 jQuery 插件模式中
- 如何从jQuery插件中附加keyup事件
- 火狐插件 - 无法触发任何类型的点击事件
- Firefox 引导插件:安装事件未执行
- 了解JavaScript事件并应用jQuery事件/插件
- 是否有一个移动触摸事件插件的jQuery