javascript - JSFiddle 不管理函数内的点击事件

标签 javascript jsfiddle

我有一个非常简单的 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模式下加载了脚本。奇怪的是,当我单击按钮时,控制台中打印了 clickclick3 但不打印 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/

相关文章:

javascript - 代码在 JSFiddle 环境中运行,但在其他环境中运行时不起作用

javascript - Promise 中的 setTimeout - 如何解决以及为什么它只运行一次?

javascript - 人们如何将所有这些很酷的谷歌地图示例放在 jsFiddle 上而不公开他们的谷歌 API key ?

javascript - React 中的条件渲染在切换时导致重新安装

javascript - 基本的javascript用户输入改变div

javascript - FabricJS 帮助缩放?

html - 具有填充页面高度的div

fiddle 更新后 JavaScript 和 jQuery 无法工作

javascript - Firefox浏览器不支持菜单(点击显示)

javascript - 无法按比例变换 100% : Error 8007