事件处理程序中的事件处理程序正在成倍增加

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) {
                    ^
...