我想为我的网站创建一个jquery插件。
我将创建事件,我想知道处理处理程序的最佳方法是什么。
我担心的是,当DOM html由于ajax查询而发生变化时,我们必须保持事件绑定。经过一些研究后,我发现最好的方法是使用jonery中提供的.on()函数。
以下是我的尝试:
jQuery.fn.wtpicker = function ( params ) {
var currentSelector = $(this);
$(document).on('click', currentSelector, function(event) {
alert('test');
});
return this;
}
但它不起作用......
live()已弃用,如果使用ajax查询动态更改HTML,则经典绑定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传递一个参数。这不是一个好方法。
非常感谢
答案 0 :(得分:1)
如果您想要选择器而不是所选元素,请尝试.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中被删除