2013-11-25 45 views
0

這是我的東西我迄今爲止小提琴:http://jsfiddle.net/Pr3fix/LTSSx/4/如何添加懸停超時以下拉元素(和子元素)?

$(function(){ 
var timer; 
$('.logo').hover(function(){ 
    $('.bubble-container').stop(true, true).fadeIn({ duration: 600, queue: false }).css('display', 'none').slideDown(600); 
}, 
function(){ 
    timer = setTimeout(function(){ 
     $('.bubble-container').stop(true, true).fadeOut({duration: 600, queue: false}).slideUp(600); 
    }, 3000); 
}); 
$('.bubble-container').hover(function(){ 
    clearTimeout(timer); 
}, 
function(){ 
    $('.bubble-container').stop(true, true).fadeOut({ duration: 600, queue: false }).slideUp(600); 
}); 

});

現在,如果您將鼠標懸停在「徽標」鏈接上,演講泡泡會使用jQuery將動畫拖放到視圖中。

如果您將鼠標懸停在「徽標」鏈接上,然後將鼠標懸停在其上方,則在氣泡隱藏之前會有一個很好的延遲。您也可以將鼠標移動到對話框中,當您將鼠標懸停在對話框上時,泡泡將不會隱藏。但只要您將鼠標移出對話框,它就會立即隱藏起來。

我的問題是:我怎樣才能讓盤旋進/出對話泡泡的行爲一樣?我不希望它立即關閉,而是需要幾秒鐘的時間,所以如果用戶不小心撞到了鼠標,它不會一直彈開和關閉。在我現有的代碼中需要更改什麼來執行此操作?任何表演或一般提示?

+0

織補。我可以採取的其他方法的任何想法? – Prefix

回答

1

只需使用.delay(2000)即可延遲事件的執行。

http://jsfiddle.net/LTSSx/7/

$('.bubble-container').stop(true, true).delay(2000).fadeIn({ duration: 600, queue: false }).css('display', 'none').slideDown(600); 
+0

嗨,我也試過你的答案,效果很好。有沒有一種方法可以讓動畫變得不那麼糟糕?基本上希望它保持打開狀態,如果用戶在鏈接/框下拉的任何地方懸停。如果光標移開,它會在隱藏之前停留2秒。如果你將鼠標移出然後重新進入,它應該重置2秒。時間到。 – Prefix

+0

@Prefix - 這基本上就是你的動畫,所有的停止和使用多種動畫方法,並沒有隊列,你會得到問題。 – adeneo

+0

@ adeneo:好的,任何替代方法來做我想要的?我不介意添加額外的插件。 – Prefix

相關問題