为了使用户保持理智,我希望在选择器悬停半秒后而不是在它们悬停后立即运行“mouseover”事件。

我首先尝试了setTimeout函数,但是它运行的时间不管元素被悬停了多长时间,我都认为并没有考虑太多。我也花了一天的时间(不停地)搜索(并玩“吃 bean ”游戏),但没有结果,除非我搜索错误的东西。

如果可以的话,我想尽量减少此插件的使用,纯粹是为了提高运行速度和可维护性。

$("#mySelector").mouseover(function(){
    // Run after 500ms
    $(this).addClass("hasBeen500ms");
});

让我们看看是否可以破解它,我知道它将有很多应用程序!

最佳答案

防止在延迟到期之前显示鼠标是否已经退出,以及在鼠标退出时移除类:

$("#mySelector").mouseenter(function() {
  var el = $(this);
  var timeoutId = setTimeout(function() {
    el.addClass("hasBeen500ms");
  }, 500);
  el.mouseleave(function() {
    clearTimeout(timeoutId);
    el.removeClass("hasBeen500ms");
  });
});
​

关于jquery - 如果元素已被 'mouseover'编辑500ms,则使用jQuery运行函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2892187/

10-12 00:00
查看更多