当父事件结束时,子侦听器是否已销毁
Are children listeners destroyed when the parent event ends?
例如,如果您有下面的代码,那么当mousedown
没有发生时,mousemove
和mouseup
事件会被销毁吗?
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);
相关文章:
- 如果侦听器附加到父元素,是否可以区分单击发生在哪个子元素上
- 是否可以在数字输入框中的小按钮中添加事件侦听器
- 当父事件结束时,子侦听器是否已销毁
- 检查是否可以添加事件侦听器而不添加
- jQuery是否覆盖事件侦听器
- CollectionFS中是否存在用于文件下载的事件侦听器/回调
- 谷歌地图API v3:缩放更改后是否有回调或事件侦听器
- AngularJS:为什么要在“$watch”侦听器中检查newValue是否与oldValue相同
- 是否可以为数组中的每个对象定义事件侦听器
- 如果 JS 未连接到 DOM 时,是否会使用事件侦听器删除双重创建的元素
- JavaScript 事件侦听器是否自动清理
- 在 MVC 模式中,侦听器是否应该在控制器中
- 是否可以让其他 javascript 事件侦听器等待异步事件
- 在 React Native 中 - 是否可以在通过道具接收的动画值上添加侦听器
- Outlook 外接程序 API 是否支持事件侦听器
- 是否可以禁用颜色框图像上的单击侦听器
- JavaScript 是否删除事件侦听器
- 如何根据变量指定是否可以调用事件侦听器
- Javascript如何判断侦听器上是否发生了event.preventDefault
- 是否存在用于将元素添加到DOM中的另一个元素中的javascript侦听器