jquery - 在 jquery 插件中使用 .on() 的最佳方法?

标签 jquery ajax dom bind handler

我想为我的网站创建一个 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/

相关文章:

javascript - 如何使用数值数组作为表单输入名称?

javascript - 使用ajax上传图片

javascript - getElementsByTagName ('a' );不工作?

javascript - 如何避免在循环中将元素附加到 DOM

javascript - 如何格式化 javascript 函数 date() 的输出?

javascript - 按钮链接加载后 JS 确认弹出窗口

javascript - 如何仅在一个窗口/选项卡中打开 HTML

Java- 如何使用 Firebug 或任何 Java 库从 URL 获取 HTML 代码,包括其 AJAX 生成的代码

php - 如何添加选择下拉列表并自动填充它

javascript - 我可以将逻辑运算符放在 document.querySelectorAll 中吗?如果是这样,如何?