如何解决新的jQuery API允许在链接期间进行同步操作?
| 除非我弄错了,否则从jQuery 1.5开始,您可以通过某种方式进行链接并插入命令以使其等待上一个操作完成。换句话说,代替此:$(\'#something\').animate({opacity: 0},500,function() { $(\'#something\').hide(); });
你可以做:
$(\'#something\').animate({opacity: 0},500).waitForIt().hide();
当然,我可能是错的。我知道animate()有delay()和一个“ queue”选项,但是我认为这些仅适用于可排队的FX,而不适用于像show / hide这样的单镜头。
解决方法
您在哪里找到提及该功能的信息?据我所知,即使animate()也无法轻松使用jQuery 1.5的延迟对象。
幸运的是,Dan Heberden编写了一些非常漂亮的代码,使语法更加清晰。使用他的解决方案,您可以编写如下内容:
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请求流中,那将非常有用。
,能做的是:
var animationTime = 500;
$(\'#something\').animate({opacity: 0},animationTime,function(){
$(this).hide();
})
工作提琴:http://jsfiddle.net/maniator/VbANC/32/
作为animate
调用的最后一个参数的函数仅在动画运行其路线之后运行
据我所知,没有waitForIt
的电话。
我制作了一个用于延迟jQuery调用的插件:
http://jsfiddle.net/maniator/Ad3pv/
这样称呼它:
$(\'div\').waitForit({
function: \'hide\',timeOut: 1000
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。