2012-09-08 92 views
1

我淡入淡出背景:停止動畫*和*阻止完整的動作運行?

// in: 
$bg.css({'pointerEvents':'auto'}).show() 
    .stop(true).animate({ 'opacity': 0.90 }, animTime); 

// out: 
$bg.css({'pointerEvents':'none'}).stop(true) 
    .animate({ 'opacity': 0 }, animTime,function() { $bg.hide(); }); 

的問題,當我開始在它完成淡出前逐漸把它回發生;完整的事件將通過淡入動畫的一部分進行觸發並隱藏背景。

我猜.stop(true)不清除完整的事件 - 有什麼辦法可以做到嗎?

回答

1

嘗試.stop(true,true)。這將停止當前的事件以及刪除排隊的事件。

.stop([clearQueue] [, jumpToEnd])
clearQueueA布爾值指示是否要刪除排隊動畫以及。默認爲false。
jumpToEndA Boolean指示是否立即完成當前動畫。默認爲false。

+1

哎呀!不知道它採取了第二個參數。現在就試試這個。編輯:其實,我不希望它跳到動畫的結尾。我希望它從任何地方消失,否則它會創建一個生澀的動畫。 – mpen

+0

@ mmmshuddup:不,它們是由點擊事件觸發的。如果一個人點擊的速度很快,他們可以在動畫結束之前將其釋放。 – mpen

1

找到一個解決辦法:

$bg.data('fading',true).css({'pointerEvents':'auto'}).stop(true).show().transition({ 'opacity': 0.90 }, animTime, function() { $bg.data('fading', false); }); 

$bg.css({'pointerEvents':'none'}).stop(true).transition({ 'opacity': 0 }, animTime,function() { 
    if(!$bg.data('fading')) { 
     $bg.hide(); 
    } 
});