2011-11-07 111 views
0

我目前使用此代碼:延遲jQuery的.live鼠標懸停功能

$('#startLabel').live('mouseover',function(){ 
$('.startTooltip').fadeIn(); 
    }); 

    $('#startLabel').live('mouseout',function(){ 
$('.startTooltip').fadeOut(); 
    }); 

當用戶將鼠標懸停在#startLabel DIV顯示工具提示股利和隱藏工具提示,當用戶移動光標了。

我想改變這一點,以便在#startLabel div被懸停3秒後纔會出現工具提示,有人能告訴我怎麼做到這一點嗎?

我已經試過這樣:

$('#startLabel').live('mouseover',function(){ 
    setTimeout(function() { 
$('.startTooltip').fadeIn(); 
}, 3000); 
    }); 

但提示如果您快速將鼠標懸停在它,然後懸停客場仍然出現。

感謝您的任何幫助。

+0

看到http://api.jquery.com/delay/ –

回答

0

我懷疑你想要的是clearTimeout函數。

你會使用它是這樣的:

var timer; 
$('#startLabel').live('mouseover',function(){ 
    timer = setTimeout(function() { 
    $('.startTooltip').fadeIn(); 
    }, 3000); 
}); 

$('#startLabel').live('mouseout',function(){ 
    $('.startTooltip').fadeOut(); 
    cancelTimeout(timer); 
}); 

本質的setTimeout返回一個可用於取消超時所以你只要取消它,如果你有問題遷出區的價值。

+0

謝謝!有一點調整我得到這個工作 –

0
$('#startLabel').live('mouseout',function(){ 
    $('.startTooltip').delay(4000).fadeIn(); 
}); 

並使用.stop([clearQueue] [,jumpToEnd])清除mouseout上的隊列; [(true,false)應該這樣做。]

+0

延遲只是延遲顯示的東西。它不會停止顯示的項目,如果你快速地將鼠標懸停在外...... – Chris

+0

這是因爲即使在鼠標懸停時,動畫隊列仍然存在。使用.stop()清除所選對象的隊列 – John

+0

您應該能夠編輯您的答案,以便將其放入。由於它存在與OP原始代碼完全相同的問題,因此您的答案不正確。 – Chris