我想为我的网站创建一个 jquery 插件。
我将创建事件,并且我想知道处理处理程序的最佳方法是什么。
我担心的是,当 DOM html 由于 ajax 查询而更改时,我们必须保持事件绑定(bind)。经过一些研究,我发现最好的方法是使用 jquery 中提供的 .on() 函数。
这是我尝试过的:
jQuery.fn.wtpicker = function ( params ) {
var currentSelector = $(this);
$(document).on('click', currentSelector, function(event) {
alert('test');
});
return this;
}
但是它不起作用...
live() 已被弃用,如果使用 ajax 查询动态更改 HTML,经典的 bind d.click() 将不起作用...好吧,我迷路了。
我应该指定选择器的 dom,例如第二个参数中的“#whatever div.myclass”。但由于它是一个插件,我无法知道它。
为了让它发挥作用,我不得不写:
jQuery.fn.wtpicker = function ( params ) {
var currentSelector = $(this);
$(document).on('click', '#whatever div.myclass' , function(event) {
alert('test');
});
return this;
}
但如果我不需要另一个选择器,它的效率并不高。
是否可以检索插件中使用的 DOM 选择器?我不想通过 dom 传递参数。这确实不是一个好方法。
非常感谢
最佳答案
如果您想要选择器而不是所选元素,请尝试 .selector
jQuery.fn.wtpicker = function ( params ) {
var currentSelector = this.selector;
$(document).on('click', currentSelector, function(event) {
alert('test');
});
return this;
}
<小时/>
来自下面的评论.selector
cannot be relied upon to give a valid selector ,它也在 jQuery 1.7 中被弃用并在 jQuery 2.0 中被删除
关于jquery - 在 jquery 插件中使用 .on() 的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16001731/