所有项目都会触发事件,而不仅仅是当前项目
Event fires for all items not just the current item
我正在尝试将我的插件附加到一个输入字段,并且它可以正常工作。因此,我将 on()
和 onchange
附加到输入字段,当它触发时,它会针对每个输入触发,而不仅仅是更改的输入。是什么原因造成的?是因为我用的是$(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
。这也意味着没有正在进行的事件处理委托。因此,您正在建立一个 "change" 事件处理程序,它将在任何 "change" 事件冒泡到文档级别时触发。
您可能 应该只是将处理程序直接附加到您的元素:
item.on("change", function() {
request(false, e);
});
我认为此行会导致错误,因为 item
应该是选择器而不是元素:
$(document).on("change", item, function(){
解决方案是在项目上放置一个偶数处理程序
$(item).on("change", function(){
request(false, e);
})
我正在尝试将我的插件附加到一个输入字段,并且它可以正常工作。因此,我将 on()
和 onchange
附加到输入字段,当它触发时,它会针对每个输入触发,而不仅仅是更改的输入。是什么原因造成的?是因为我用的是$(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
。这也意味着没有正在进行的事件处理委托。因此,您正在建立一个 "change" 事件处理程序,它将在任何 "change" 事件冒泡到文档级别时触发。
您可能 应该只是将处理程序直接附加到您的元素:
item.on("change", function() {
request(false, e);
});
我认为此行会导致错误,因为 item
应该是选择器而不是元素:
$(document).on("change", item, function(){
解决方案是在项目上放置一个偶数处理程序
$(item).on("change", function(){
request(false, e);
})