2017-01-21 21 views
1

我在清除顯示工具提示時設置的超時時遇到了一些麻煩。我相信我理解它是如何工作的,但由於某種原因,它在這裏不起作用。在hover jquery上清除超時

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

回答

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); 
});