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模式下加载了脚本。奇怪的是,当我单击按钮时,click
在click3
控制台中打印click2
但未打印。如果我再次点击它,我会得到 2 张click2
.
看起来event
在小提琴中没有得到妥善管理。有没有办法解决?
解决方案
这是正确的行为。发生这种情况的原因是因为您click
在调用foo
函数时绑定了事件。第一次调用foo
绑定事件,第二次再次绑定,以此类推。绑定事件并不会删除之前的绑定,因此如果单击submit
10 次,您将绑定 10 个不同click
的事件处理程序,它们都在做同样的事情,您将在控制台中收到 10 次“click2”。
推荐阅读
- javascript - 如何在不硬刷新的情况下升级新的 React 应用程序版本?
- reactjs - 从外部函数改变 Modal 的状态
- php - 调用未定义的函数 imagewebp()
- python - 编写脚本以使用正则表达式在两个模式之间打印字符串,但仅最后一次出现
- python - 如何使用 Python 将 Azure 中的文件从一个存储帐户复制到另一个存储帐户?
- spring-data-jpa - JPA 会生成多个自动生成的列吗
- node.js - 快速会话不断让我退出
- perl - 什么时候从 perl 中删除了 -P 选项?
- asp.net - ASP.NET Core - NLog - 如何禁用特定路由的日志记录?
- html - 我正在使用图片覆盖整个屏幕,但它没有覆盖,垂直滚动条显示,水平滚动条没有