我有一个非常简单的 JSFiddle
HTML
<input type="button" value="Submit" id="myBtn" onclick="foo()">
JS
function foo(){
console.log('click');
$("#myBtn").click(function(event) {
console.log('click2');
});
console.log('click3');
}
链接如下:https://jsfiddle.net/mdvyo481/
我已经在No Wrap - Head模式下加载了脚本。奇怪的是,当我单击按钮时,控制台中打印了 click
和 click3
但不打印 click2
。如果我再次点击它,我会得到 2 个 click2
的打印结果。
看起来事件
在 fiddle 中没有正确管理。有办法解决吗?
最佳答案
这是正确的行为。发生这种情况的原因是因为您在调用 foo
函数时绑定(bind)了事件 click
。第一次调用 foo
时,您将绑定(bind)该事件,第二次则再次绑定(bind)它,依此类推。绑定(bind)事件不会删除之前的绑定(bind),因此如果您单击 submit
10 次,您将绑定(bind) 10 个不同的 click
事件处理程序,所有这些都执行相同的操作,您将在控制台中接收“click2”10 次。
关于javascript - JSFiddle 不管理函数内的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55378466/