2011-04-15 43 views
2

除非我搞錯了,否則自從jQuery 1.5開始,你可以以某種方式進行鏈接並插入一條命令,讓它等待上一個操作完成。換句話說,而不是這樣的:在鏈接期間允許同步操作的新jQuery API?

$('#something').animate({opacity: 0}, 500, function() { $('#something').hide(); }); 

你可以這樣做:

$('#something').animate({opacity: 0}, 500).waitForIt().hide(); 

當然,我可能是錯的。我知道這裏有delay()和animate()的「隊列」選項,但我認爲它們只適用於可排隊的FX,而不是像show/hide這樣的一次性選項。

回答

2

你從哪裏找到該功能的提及?據我所知,即使jQuery 1.5的deferred objects也不能使用animate()

幸運的是,Dan Heberden寫了some very nice code,使語法更清晰。用他的解決方案,你可以寫這樣的:

var $something = your$('#something'); 
$.when($something.animate({opacity: 0}, 500)).done(function() { 
    $something.hide(); 
}); 

其中,當然,很多不是簡單地傳遞一個回調animate()首先更詳細。

編輯:jQuery 1.6現在實現本地功能。實際上,你可以這樣做:

var $something = $('#something'); 
$.when($something.animate({opacity: 0}, 500)).done(function() { 
    $something.hide(); 
}); 

,如果你已經在使用延遲的對象,並希望合併動畫到您的AJAX請求流仍然是矯枉過正簡單的動畫,但非常有用的。

1

什麼可以做的是:

var animationTime = 500; 
$('#something').animate({opacity: 0}, animationTime, function(){ 
    $(this).hide(); 
}) 

工作小提琴:http://jsfiddle.net/maniator/VbANC/32/

animate調用的最後一個PARAM功能只能運行在動畫自生自滅後
沒有我knowlegde任何waitForIt電話。

我犯了一個插件jQuery的通話延遲:

http://jsfiddle.net/maniator/Ad3pv/

調用它像這樣:

$('div').waitForit({ 
    function: 'hide', 
    timeOut: 1000 
}); 
+0

我想提問人都知道,因爲你的答案是相當於他很第一個代碼示例:) – 2011-04-15 20:03:12

+0

@Fredric,哎呀沒有看到正確的大聲笑,我ddnt注意到! – Neal 2011-04-15 20:07:40

+0

@Fredric我編輯了我的答案 – Neal 2011-04-15 20:11:53

相關問題