1

在我的代码中,当用户第一次将鼠标悬停在 div 上时执行一个函数,并且该函数需要大约 30 秒才能完成,在这 30 秒内,如果用户再次将鼠标悬停在同一个 div 上,该函数会再次执行,所以我想禁用鼠标悬停事件第二次。是否有任何 javascript 或 jquery 代码可以禁用该 div 的偶数?谢谢,任何帮助将不胜感激。

4

3 回答 3

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);
    });
}
于 2012-07-02T14:10:16.853 回答
3
var isExecuting = false;

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

  isExecuting = false;
}
于 2012-07-02T14:02:03.263 回答
3

你可以看看 jquery 的一个有趣的特性.......one()这里是它的链接

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

第二个想法

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

于 2012-07-02T14:02:36.213 回答