事件处理程序中的事件处理程序正在成倍增加
Event handler inside event handler is multiplying
我有这个代码
jQuery('#parent').on('click', jQuery('#fileInput'), function (e) {
jQuery(e.target).attr('data-fileurl', '');
jQuery('#parent').on('change', jQuery('#fileInput'), function (e) {
usefulFunction(jQuery(e.target);
}
}
我们的想法是检测是否在文件浏览时选择了取消,并且成功了。
问题是,如果我再次单击它,那么它将 运行 .on('chance')
两次,因此 运行 usefulFunction
。每次单击都会添加一个更改事件处理程序。每次更改 jQuery('#fileInput')
时,usefulFunction
只能是 运行 一次。我怎样才能防止这种意外行为?
您应该改用 one
方法:
jQuery('#parent').one('change', jQuery('#fileInput'), function (e) {
^
...
我有这个代码
jQuery('#parent').on('click', jQuery('#fileInput'), function (e) {
jQuery(e.target).attr('data-fileurl', '');
jQuery('#parent').on('change', jQuery('#fileInput'), function (e) {
usefulFunction(jQuery(e.target);
}
}
我们的想法是检测是否在文件浏览时选择了取消,并且成功了。
问题是,如果我再次单击它,那么它将 运行 .on('chance')
两次,因此 运行 usefulFunction
。每次单击都会添加一个更改事件处理程序。每次更改 jQuery('#fileInput')
时,usefulFunction
只能是 运行 一次。我怎样才能防止这种意外行为?
您应该改用 one
方法:
jQuery('#parent').one('change', jQuery('#fileInput'), function (e) {
^
...