Javascript 指针事件禁用后触发1次最终鼠标输出

Javascript 指针事件禁用后触发1次最终鼠标输出,javascript,css,babeljs,pointer-events,Javascript,Css,Babeljs,Pointer Events,我的场景是在div上侦听“click”和“mouseout”事件。当click事件触发时,会向div添加一个类以禁用指针事件。此操作有效,但在禁用指针事件后将触发1个最终“mouseout”事件。知道为什么/如何修复吗 我认为你正在将鼠标指针的样式与实际事件的触发相混淆 看起来你所做的只是隐藏鼠标指针。如果要禁用单击或鼠标事件,必须附加事件侦听器。倾听事件并添加 document.on("mouseleave","#elementid",function(e){ e.preventDe

我的场景是在div上侦听“click”和“mouseout”事件。当click事件触发时,会向div添加一个类以禁用指针事件。此操作有效,但在禁用指针事件后将触发1个最终“mouseout”事件。知道为什么/如何修复吗


我认为你正在将鼠标指针的样式与实际事件的触发相混淆

看起来你所做的只是隐藏鼠标指针。如果要禁用单击或鼠标事件,必须附加事件侦听器。倾听事件并添加

document.on("mouseleave","#elementid",function(e){
    e.preventDefault();
}

如果您正在使用jQuery,我认为您将鼠标指针样式与实际事件触发相混淆

看起来你所做的只是隐藏鼠标指针。如果要禁用单击或鼠标事件,必须附加事件侦听器。倾听事件并添加

document.on("mouseleave","#elementid",function(e){
    e.preventDefault();
}

如果您使用的是jQuery,请删除代码中的反勾号,改为使用单引号


编辑:

onclick
处理程序中重置
mouseout
事件处理程序:

div.onclick = function() {
    console.log('click!');
    div.classList.add('nopointer');
    div.onmouseout = undefined;
};

此外,您还可以使用
this
关键字进一步改进代码,该关键字将指向
div
本身:

div.onclick = function() {
    console.log('click!');
    this.classList.add('nopointer');
    this.onmouseout = undefined;
};

删除代码中的反勾号,改为使用单引号


编辑:

onclick
处理程序中重置
mouseout
事件处理程序:

div.onclick = function() {
    console.log('click!');
    div.classList.add('nopointer');
    div.onmouseout = undefined;
};

此外,您还可以使用
this
关键字进一步改进代码,该关键字将指向
div
本身:

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);

您可以像这样使用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);

这并不能解决问题。在我使用时允许使用反勾号babel@BradWoods请参阅我上面的编辑。这并不能解决问题。在我使用时允许使用反勾号babel@BradWoods请看我的编辑上面。