在悬停jquery上清除超时

时间:2017-01-21 18:36:04

标签: jquery

我在清除显示工具提示时设置的超时时遇到了一些麻烦。我相信我理解它是如何工作的,但由于某种原因它在这里不起作用。

$('.div').hover(
    function(){ var t = setTimeout(function() {
                $('.tooltip').show(500);
                }, 500);},
    function(){ clearTimeout(t);
                $('.tooltip').hide(300);
 });

1 个答案:

答案 0 :(得分:0)

在函数外部移动变量声明以获得两个回调中的变量范围,否则t无法在第二个回调中访问。如果要停止当前正在运行的动画,请使用stop()方法。

var t;
$('.div').hover(function() {
  t = setTimeout(function() {
    $('.tooltip').show(500);
  }, 500);
}, function() {
  clearTimeout(t);
  $('.tooltip').stop().hide(300);
});

或使用delay()方法在动画队列之间提供延迟。

$('.div').hover(function() {
  $('.tooltip').delay(500).show(500);
}, function() {
  clearTimeout(t);
  $('.tooltip').stop().hide(300);
});