Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript/jquery禁用鼠标悬停事件?_Javascript_Jquery_Events - Fatal编程技术网

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

如何使用javascript/jquery禁用鼠标悬停事件?,javascript,jquery,events,Javascript,Jquery,Events,在我的代码中,一个函数在用户首次鼠标悬停在一个div上时执行,该函数需要30秒才能完成,在这30秒内,如果用户再次鼠标悬停在同一个div上,该函数将再次执行,因此我想第二次禁用鼠标悬停事件。是否有任何javascript或jquery代码来禁用该div中的偶数? 谢谢,我们将衷心感谢您的帮助。您可以查看jquery的一个有趣功能.one()这是给它的 var isExecuting = false; function yourThirtySecFunction() { if (isExec

在我的代码中,一个函数在用户首次鼠标悬停在一个div上时执行,该函数需要30秒才能完成,在这30秒内,如果用户再次鼠标悬停在同一个div上,该函数将再次执行,因此我想第二次禁用鼠标悬停事件。是否有任何javascript或jquery代码来禁用该div中的偶数?
谢谢,我们将衷心感谢您的帮助。

您可以查看jquery的一个有趣功能
.one()
这是给它的

var isExecuting = false;

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

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

第二个想法


我可以再给你一个想法,假设鼠标移动发生一次,只需在开始操作之前解除鼠标移动事件的绑定,然后一旦操作结束,再将其绑定回来…

你可以看看jquery的一个有趣功能
.one()
这是给它的

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

第二个想法

我可以再给你一个主意,假设鼠标移过一次,只需在开始操作之前解除鼠标移过事件的绑定,然后在操作结束后,再次绑定它们…

使用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);
    });
}
将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);
    });
}

那30秒的函数是异步的吗?哇,3个人怎么回答这个问题而没有看到任何东西code@Esailija不,如果你知道自己在做什么,那么对这个问题提供一个有根据的猜测是合理的。不幸的是,四个人中只有两个人似乎知道他在做什么……30秒的函数是异步的吗?哇,三个人怎么回答这个问题而没有看到任何答案code@Esailija不,如果你知道自己在做什么,那么对这个问题提供一个有根据的猜测是合理的。不幸的是,四个人中只有两个人似乎知道他在做什么……isExecuting=false;可以在异步内容结束时放置,不一定在这个函数的末尾。是的,没错。另一点是,如果东西不是异步的,那么浏览器无论如何都不会响应任何东西;可以在异步内容结束时放置,不一定在这个函数的末尾。是的,没错。另一点是,如果东西不是异步的,那么浏览器无论如何都不会响应任何东西。+1是正确证明必须在异步回调完成时重新启用事件处理的唯一答案+1是正确证明必须启用事件处理的唯一答案在异步回调完成时重新启用哪个将是您认为最好的解决方案?哪个将是您认为最好的解决方案?