在事件发生后等待x毫秒,重新检查并触发

时间:2009-09-26 19:46:53

标签: javascript jquery dom

我目前有一个jQuery.event监听器,一旦触发将显示一个隐藏的元素(基本上是翻转)。

但是,有没有办法让jQuery等待几毫秒,重新检查以确保鼠标仍在元素上,然后触发.show()事件,如果是的话?

我目前有:

$("#who-mousearea").mouseenter(function(){  
    $("a#who-edit").fadeIn();  
}).mouseleave(function(){  
    $("a#who-edit").fadeOut();  
});

我知道我可以使用setTimeout,但这只会延迟fadeIn()元素所需的时间。

任何人都知道如何实现这个目标?

2 个答案:

答案 0 :(得分:5)

var timeout = null;

$("#who-mousearea").mouseenter(function(){
  timeout = setTimeout(function() {
    timeout = null;
    $("a#who-edit").fadeIn();
  }, 50);
}).mouseleave(function(){
  if (timeout == null) {
    $("a#who-edit").fadeOut();
  }
  else {
    clearTimeout(timeout);
  }
});

答案 1 :(得分:0)

鼠标离开时清除超时。