2012-02-20 158 views
2

我想處理一個菜單,在這裏,當你將鼠標懸停在某個項目,一個盒子淡入,另一個項目,另一個盒子淡入:jQuery fadeIn/fadeOut比賽條件?

$('.all').fadeOut('fast', function() { $('#item').fadeIn('fast'); 

,但有時當你用鼠標太快,多事情顯現出來,或者所有事情都會再次發生......我如何優雅地處理比賽?

+0

您需要一個信號燈。 – 2012-02-20 22:07:16

+0

@TravisJ,單線程代碼中的信號量? – Lucero 2012-02-20 22:12:47

+0

@lucero - Yup,儘管它們的用途主要用於多線程,但信號量的定義用於處理競爭條件。也許一個旋轉鎖將在這裏工作。 – 2012-02-20 22:28:41

回答

6
$('.all').stop(true, true).fadeOut('fast', function() { $('#item').stop(true, true).fadeIn('fast'); 

stop(true)可能就足夠了,很難說沒有看到你的html。

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

+0

謝謝,我有更多的代碼,但真正的上述代碼是我所做的。 – Timmy 2012-02-21 01:54:43

1

嘗試嘗試使用「隊列」選項。我不確定它是否在fadeIn函數中可用,但是您可以嘗試使用具有隊列選項的動畫函數對不透明度進行動畫處理。 ('。item')。animate({opacity:0},{queue:false});