javascript - 所有项目都会触发事件,而不仅仅是当前项目

标签 javascript jquery jquery-plugins

我正在尝试将我的插件附加到输入字段,并且它有些工作。因此,我将带有 onchangeon() 附加到输入字段,当它触发时,它会针对每个输入触发,而不仅仅是更改的输入。是什么原因造成的?是不是因为我使用了$(document).on()?我以这种方式添加它,因为项目是动态添加到页面的。

(function($){
    $.fn.itemsave = function(config){
    return this.each(function(){
        var item = $(this);
        var opt = {
            // The options
        };
        var e = $.extend(opt, config);
        $(document).on("change", item, function(){
            request(false, e);
        });
    });
})(jQuery);

如何称呼:

$(".simplesave").itemsave(null);

最佳答案

您正在传递一个 jQuery 对象作为 .on() 的第二个参数。这不是错误,但库会将其解释为一个对象,作为 event.data 可供事件处理程序使用。这也意味着没有正在进行的事件处理委托(delegate)。因此,您正在建立一个“更改”事件处理程序,只要任何“更改”事件冒泡到文档级别,该处理程序就会触发。

可能应该只是将处理程序直接附加到您的元素:

item.on("change", function() {
    request(false, e);
});

关于javascript - 所有项目都会触发事件,而不仅仅是当前项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29401149/

相关文章:

javascript - jquery点击之间的超时

javascript - Rss feed 项目被多次拉入

javascript - 仅针对被单击的某些链接文本发送警报

javascript - knockout JS : observableArray always remains empty

jquery - 创建表单后添加 jquery 验证

javascript - 关于 Node.js 范围的困惑

javascript - iOS Safari 显示来自 .toLocaleString() 和 .slice() 的不同数据

javascript - 如何停止在浏览器中打印到文件?

javascript - jQuery 自动完成结果中出现的 jQuery UI 图标

javascript - jQuery 插件创作 : Cannot get basic example to work?