我像这样加载动态内容:
$('.cPopUpOverlay').fadeIn('fast');
$('.cPopUpOverlay').append('<div class=\'cPopUpContent\'></div>');
$('.cPopUpContent').load('popups/popup_1.php');
$('.cPopUpContent').fadeIn('fast');popup_1.php有一些数据和一个简单的按钮。
<input type='button' id='btn_action_add' action='add' value='add'>同样,在我执行前4行代码的页面中,有以下内容:
$('.cPopUpOverlay').on('click', 'input[type=\'button\']', function() {
console.log('clicked');
$('.cPopUpOverlay').fadeOut();
$('.cPopUpOverlay').html('');
}基本上,它发送“点击”到控制台,并删除popup_1.php的内容并关闭它。
这一切都运行得很好。除了..。当我打开弹出窗口时,控制台显示“已点击”,当我重新打开弹出窗口时,它显示“已点击(3)”。关闭并单击后再次显示“已单击(6)”
每次我重新打开弹出窗口时,它都会执行n次单击,其中n是我打开弹出窗口的次数。就像单击事件停留在某个地方并一次又一次地执行一样,就好像每次打开弹出窗口时,都会有一个额外的按钮在触发.on(' click ')事件时被计算出来。
我不明白为什么会这样。我使用以下命令来清除内容:
$('.cPopUpOverlay').fadeOut();
$('.cPopUpOverlay').html('');有什么想法吗?
发布于 2017-03-16 21:05:30
正如Amenadiel所建议的..。每次单击时,我都会重新声明侦听器。很明显我错过了。抱歉:-/
https://stackoverflow.com/questions/42834322
复制相似问题