禁用指针事件后,1个最后的mouseout触发
1 final mouseout fires after pointer-events disabled
我的场景是听'click'&'mouseout’事件。当click事件触发时,会在div中添加一个类来禁用指针事件。除了指针事件被禁用后将触发1个最终的"mouseout"事件外,此操作正常。为什么/如何修复有什么想法吗?
http://codepen.io/BradLee/pen/grzrOz
/* style */
.nopointer{
pointer-events: none;
}
let div = document.querySelector(`div`);
div.onclick = function() {
console.log('click!');
div.classList.add(`nopointer`);
};
div.onmouseout = function() {
console.log('mouseout!');
};
我认为鼠标样式的指针与实际事件的触发相混淆。
你所做的似乎只是隐藏鼠标指针。如果要禁用单击或鼠标事件,则必须通过附加事件侦听器来实现。监听事件并添加
document.on("mouseleave","#elementid",function(e){
e.preventDefault();
}
如果您使用的是jQuery
删除代码中的反引号,改为使用单引号。
更新的CodePen
console.clear();
let div = document.querySelector('div');
div.onclick = function() {
console.log('click!');
div.classList.add('nopointer');
};
div.onmouseout = function() {
console.log('mouseout!');
};
编辑:
重置onclick
处理程序中的mouseout
事件处理程序:
div.onclick = function() {
console.log('click!');
div.classList.add('nopointer');
div.onmouseout = undefined;
};
编辑的CodePen
此外,您还可以使用指向div
本身的this
关键字来进一步改进代码:
div.onclick = function() {
console.log('click!');
this.classList.add('nopointer');
this.onmouseout = undefined;
};
您可以使用addEventListener和removeEventListener函数,如下所示:
let div = document.querySelector('div');
div.onclick = function() {
console.log('click!');
this.classList.add('nopointer');
div.removeEventListener("mouseleave", mymouseout);
};
function mymouseout() {
console.log('mouseout!');
}
div.addEventListener("mouseleave", mymouseout);
相关文章:
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- jQuery自定义验证比较多个输入的序列
- 使用数据上的角度更改设置集合的第一个元素的动画
- 无法获取vis.js最后一个或第一个选定的网络节点
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 禁用指针事件后,1个最后的mouseout触发
- 将最后一个元素移动到数组中的第二个项目的最快方法
- 如果用户使用jquery选择了3个以上的选项,则从多选中删除最后选择的元素
- 使用isroll4将最后一个元素滚动到第一个元素的开始位置
- 使用单个画布,我用javascript绘制了两个不同的图表,是否有任何方法可以在画布中删除最后绘制的图表
- 谷歌地图:多个InfoWindows总是显示最后的值
- 用于删除最后n个字符的正则表达式
- 比较两个字符串,找出最初和最后的差异
- split(“/”)从第二个到最后的URL
- 检索最后的&从Ember.js模型的倒数第二个记录
- 我在一个对象中创建了两个不同的对象.在打印它们时,只显示最后修改的对象.如何创造
- 获取RxJS Observable最后两个值的差值
- 如何使用jQuery停止列表最后三个元素的操作
- javascript 仅包含最后 N 个元素的数组
- If/else语句:搜索多个可能的值,只找到最后一个值(javascript)