如何使用javascript / jquery禁用鼠标悬停事件?

时间:2012-07-02 13:59:45

标签: javascript jquery events

在我的代码中,一个函数在第一次用户鼠标悬停在div上时执行,该函数需要30秒才能完成,在30秒内如果用户再次鼠标悬停在相同的div上,该函数再次执行,所以我想禁用鼠标悬停事件第二次。是否有任何javascript或jquery代码禁用该div甚至? 谢谢,任何帮助都会受到衷心的赞赏。

3 个答案:

答案 0 :(得分:10)

使用jQuery的on()和off()进行某种回调,例如:

$("#myElementID").on('mouseover', myFunction);

myFunction(e) {
    var myElement = e.target;
    myElement.off('mouseover', myFunction);
    //do something that takes 30 seconds
    myElement.animate({top: 1000}, 30000, function() { //callback
        myElement.on('mouseover', myFunction);
    });
}

答案 1 :(得分:3)

var isExecuting = false;

function yourThirtySecFunction() {
  if (isExecuting == true) return;
  isExecuting = true;
  //do your stuff here

  isExecuting = false;
}

答案 2 :(得分:3)

你可以看一下jquery的一个有趣的特性...... .one()这里是the link

描述:将处理程序附加到元素的事件。每个元素最多执行一次处理程序。

第二个想法

我可以给你一个更多的想法,假设鼠标悬停发生一次,只需在开始操作之前取消绑定鼠标悬停事件,然后一旦操作结束,再将它们绑定回来......