我正在尝试将我的插件附加到输入字段,并且它有些工作。因此,我将带有 onchange
的 on()
附加到输入字段,当它触发时,它会针对每个输入触发,而不仅仅是更改的输入。是什么原因造成的?是不是因为我使用了$(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/