2012-08-29 59 views
4

我有顯示和使用jquery懸停在一個元素時隱藏的(效果基本show和了slideDown)一dropmenu ...jQuery的問題與效果基本show /下和clearQueue

$("#element").hover(function() { 
    $(this).next().clearQueue(); 
    $(this).next().slideDown(); //animate({height:300},100); 
}, function() { 
    if (!$(this).next().is(':hover')) { 
     $(this).next().clearQueue(); 
     $(this).next().slideUp(); //animate({height:0},100); 
    } 
}); 

我最初並沒有包括線clearQueue(),但如果用戶在#element之外不停地移動,則會導致slideUp/Down長時間排隊和動畫。

添加該行表示,如果用戶將鼠標懸停並在進出真的很快下拉沒有完全出現。

我可以解決這個問題通過動畫的了slideDown但麻煩的是,我不知道確切的高度,我需要動畫,因爲它可以改變。

反正是有停止這種行爲呢?

+0

您是否嘗試過倒車的效果基本show /下和你的clearQueue的順序?你能不能也爲我們提供的jsfiddle幫助調試問題。 –

回答

0

我曾與效果基本show和了slideDown類似的問題在那裏了slideDown將在動畫過程中給我的元素的靜態高度,而元素必須保持動態調整,因爲它的內容可能隨時改變。我固定由CSS高度值設定爲在animationFinished回調一個空字符串(即「」)。

所以這應該解決您的問題:

$("#element").hover(function() { 
    $(this).next().stop(true).slideDown(400, function() { // .stop(true) is basically the same as .clearQueue() except that it only stops and clears animations 
     $(this).css('height', ''); 
    }); //animate({height:300},100); 
}, function() { 
    if (!$(this).next().is(':hover')) { 
     $(this).next().stop(true).slideUp(); //animate({height:0},100); 
    } 
}); 
相關問題