2011-09-21 92 views
2

http://jsfiddle.net/sJFLq/1/jQuery的停止fadeTo效果

我想要的是一種的鼠標追蹤效果,當鼠標懸停向上或向下的div。但是,如果您將鼠標懸停幾次然後停止,則效果不斷重複。

我該如何解決這個問題?我想我需要某種類似於動畫選項的排隊功能,但對於fadeTo功能。有任何想法嗎?

+1

也許:http://api.jquery.com/stop/ –

+1

可能重複[如何在jQuery中停止效果](http://stackoverflow.com/questions/59896/how-doi-i-停止效果在jquery) – bzlm

回答

5

可以使用.stop方法停止先前的喧鬧。如果您通過true作爲參數,它也將清除排隊的動畫。

如果我明白你在找什麼東西,那麼你想要的是這個(你說你想要一個「鼠標線」,我想這意味着你不想讓以前的動畫只要鼠標離開該元素停止,因此只有一個調用.stop):

$(".test").mouseover(function(e){ 
    $(this).stop(true).fadeTo(200,1); 
}).mouseout(function(e){ 
    $(this).fadeTo(200,0.3); 
}); 

你可以看到,運行here

2

終止您以前的動畫添加.stop()http://jsfiddle.net/sJFLq/5/

$(".test").mouseover(function(e){ 
    $(this).stop(true, true).fadeTo(200,1); 
}).mouseout(function(e){ 
    $(this).stop(true, true).fadeTo(200,0.3); 
}); 
+0

確保並設置兩個參數,以根據需要停止。第一個參數清除此對象的任何其他未決動畫的隊列,第二個參數跳轉到動畫的結尾(通常需要正確定位下一個動畫)。通常,你想'.stop(true,true)'。兩者的默認值都是false。有關更多信息,請參閱http://api.jquery.com/stop/。 – jfriend00

+0

謝謝,我已經更新了示例。 – Samich

4

完全按照您在您的標題形容它:)

$(".test").mouseover(function(e){ 
    $(this).stop().fadeTo(200,1); 
}).mouseout(function(e){ 
    $(this).stop().fadeTo(200,0.3); 
}); 
+0

簡單的停止也減少了平滑的尾跡效應。 – Bluemagica

+0

@aoi我認爲James Allardice的回答正是你想要的! – Andy