2011-05-13 64 views
4

我對此非常惱火!基本上,我有一個div,它最終會有一個小菜單,當你將鼠標放到不同的div上時,這個小div會向下移動到視圖中並變得可見(mouseout會導致相反的效果)。停止當前觸發過程中觸發jQuery事件?

這一切都很好,除非如果我mouseover和鼠標非常快,我得到閃爍(jQuery隊列趕上,我假設)。

所以基本上,有沒有辦法阻止這種情況發生?你可以告訴jQuery「目前爲止,在當前隊列完成之前不要排隊其他任何東西」嗎?

我還是比較新的jQuery。我的代碼下面看起來像它應該工作,但似乎並沒有停止隊列添加!在這種情況下請原諒愚蠢地使用x ++/y ++,這只是我在發佈之前嘗試的最後一件事。

任何人都可以提供幫助嗎?

var x = 0; 
var y = 0; 

function hideme() 
{ 
    if (x == 0 && y == 0) 
    { 
     x++; 
     $(unimenu).fadeOut('slow'); 
     $(unimenu).animate({top: "-40px" }, {queue: false, duration: 'slow'}); 
     x = 0; 
    } 
} 

function showme() 
{ 
    if (y == 0 && x == 0) 
    { 
     y++ 
     $(unimenu).fadeIn('slow'); 
     $(unimenu).animate({top: "40px" }, {queue: false, duration: 'slow'}); 
     y = 0; 
    } 
} 

回答

2

我認爲你要找的是stopstop將停止以前的動畫。如果您在開始下一個動畫之前停止之前的動畫,則可避免排隊造成您的問題的大量動畫。

http://api.jquery.com/stop/

你提到有問題jQuery的懸停頁面上的演示。使用stop來查看該演示的修改版本。注意它沒有問題:

http://jsfiddle.net/WskXt/

0

不,你不能延遲事件,因爲這些是由瀏覽器,而不是jQuery提出的。相反,您可以使用queue屬性將動畫放入隊列中。該隊列將只在前一個動畫完成後才運行動畫。

搜索本頁面queue