【发布时间】:2021-01-12 02:21:28
【问题描述】:
我尝试从另一个事件目标中移除一个事件监听器:
-I can remove the event to the red element from this "red event" //我可以从这个"green event"中移除事件到绿色元素。
-但是我无法从“红色事件”中移除事件到绿色元素 // 我无法从“绿色事件”中移除事件到红色元素,我不明白为什么。
如何在第一次单击其中一个元素后删除所有事件侦听器?
var clickred = 0;
var clickgreen = 0;
var elemRed = document.getElementById("js-click-me-red");
var elemGreen = document.getElementById("js-click-me-green");
elemRed.addEventListener("click", function h() {
clickred++;
if (clickred >= 3) {
elemGreen.removeEventListener("click", h);
elemRed.removeEventListener("click", h);
}
// debug only
document.getElementById("js-debug-red").innerHTML += "click<br>";
});
elemGreen.addEventListener("click", function h() {
clickgreen++;
if (clickgreen >= 3) {
elemRed.removeEventListener("click", h);
elemGreen.removeEventListener("click", h);
}
// debug only
document.getElementById("js-debug-green").innerHTML += "click<br>";
});
body {
display: flex;
flex-direction: row;
}
#js-debug-red {
color: red;
}
#js-debug-green {
color: green;
}
<body>
<article>
<div id='js-click-me-red' style='width: 50px; height: 50px; background-color: red'></div>
<div id='js-debug-red'></div>
</article>
<article>
<div id='js-click-me-green' style='width: 50px; height: 50px; background-color: green'></div>
<div id='js-debug-green'></div>
</article>
</body>
【问题讨论】:
-
名称
h是该函数表达式的本地名称。因此,在elemRed中,您将删除红色的h监听器,在elemGreen中,您将删除绿色的h监听器。
标签: javascript removeeventlistener