假设我将.submit()
事件添加到<form>
中。如果我多次将相同的.submit()
事件添加到同一个<form>
中,会出现问题吗?
为了澄清,我有一个函数来初始化和填充<form>
并创建.submit()
事件。提交<form>
后,我必须重新初始化并重新填充<form>
。简单的方法是调用相同的函数,但也可以在同一个<form>
上创建<form>
事件--这确实不是必要的,但是有一个函数看起来更容易读懂。
发布于 2016-11-15 01:50:51
如果您使用jQuery重复添加处理程序,则会在事件发生时重复添加它,从而重复调用它(但请继续阅读)。示例:
var target = $("#target");
target.on("click", handler);
target.on("click", handler);
target.on("click", handler);
function handler() {
console.log("handler called");
}
<div id="target">click me</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
在这种情况下,要做的简单事情是以某种方式标记添加了处理程序的元素,以便知道是否要添加它:
var form = $("....");
if (!form.hasClass("has-handler")) {
form.on("submit", handler).addClass("has-handler");
}
注意:但是,如果您使用相同的函数,则DOM不是这样的:
var target = document.getElementById("target");
target.addEventListener("click", handler, false);
target.addEventListener("click", handler, false);
target.addEventListener("click", handler, false);
function handler() {
console.log("handler called");
}
<div id="target">click me</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
https://stackoverflow.com/questions/40606547
复制相似问题