2011-04-15 45 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

相关问题