2

我想为我的网站创建一个 jquery 插件。

我将创建事件,我想知道处理处理程序的最佳方式是什么。

我担心的是,当 DOM html 由于 ajax 查询而发生变化时,我们必须保持事件绑定。经过一些研究,我发现最好的方法是使用 jquery 中可用的 .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 传递参数。这真的不是一个好方法。

非常感谢

4

1 回答 1

1

如果您想要选择器而不是选定的元素,请尝试.selector

jQuery.fn.wtpicker = function ( params ) {
    var currentSelector = this.selector;

    $(document).on('click', currentSelector, function(event) {
        alert('test');
    });

    return this;
}

从下面的评论中.selector不能依靠给出一个有效的选择器,它在 jQuery 1.7 中也被弃用并在 jQuery 2.0 中被删除

于 2013-04-14T17:05:30.673 回答