例如,如果您具有下面的代码,则当mousemove
不发生时,mouseup
和mousedown
事件是否会被破坏?
var el = document.getElementById('mydiv');
el.addEvenListener('mousedown', function(event){
initializeStuff();
document.onmousemove = function(event) {
event = event || window.event;
showDragAnimation();
};
doucment.onmouseup = function() {
showFinalPosition();
};
}, false);
最佳答案
不,它们不会被破坏-不知道mousedown
是“未发生”。由于JS不能并发运行,所以这毫无意义。
如果您的代码确实使用了addEventListener
,则将严重泄漏事件处理程序,并且您的应用程序将变得很脚(每次单击都会得到更多响应)。只有您使用的是旧的on…
属性来覆盖以前的侦听器这一事实,才可以避免这种命运。
您将要使用
function onmousedown(event) {
this.addEventListener("mousemove", onmousemove, false);
this.addEventListener("mouseup", onmouseup, false);
initializeStuff();
}
function onmousemove(event) {
showDragAnimation();
}
function onmouseup(event) {
this.removeEventListener("mousemove", onmousemove);
this.removeEventListener("mouseup", onmouseup);
showFinalPosition();
}
document.getElementById('mydiv').addEvenListener('mousedown', onmousedown, false);
关于javascript - 家长事件结束后, child 听众会被销毁吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28681601/