我假设flip
必须只是使用animate
下盖,默认情况下,您可以排队多个动画,然后按顺序播放。为了避免这种情况,您可以告诉给定的动画不要排队并立即执行。
那么试试这个:
$("#flipDiv").flip({
direction:'lr',
content:newContent
});
$("#flipDiv").animate({
'marginLeft' : "+=150px"
}, {queue: false});
欲了解更多信息,看看上animate
的API文档,以及queue
和dequeue
。
编辑:好吧,看着翻转插件的源现在我相信这个问题是,当你运行flip
它实际上隐藏要素(#flipDiv
你的情况),创建了一个占位符克隆它在&上执行翻转动画,然后在最终状态下重新显示原始div。这意味着即使您同时进行动画,它也会动画显示隐藏的div,所以它会突然重新出现在动画中途或完成后。
你可以尝试,而不是动画的克隆,您可以从onBefore
回调访问,像这样:
$("#flipDiv").flip({
direction:'lr',
content:newContent,
onBefore: function(clone) {
clone.animate({ 'marginLeft' : "+=150px" }, {queue: false});
})
});
当然不会实际移动原来的div,所以当翻转结束的div你仍然会在旧的位置,所以你也需要改变它。如果您希望动画的时间与翻转时间相同(或更少),那么您可以直接设置原始的marginLeft,否则您可以对它进行动画处理,使其大致保持同步。
可能是这种情况。这应该工作。 – Mark 2010-02-17 02:54:36
嗯。这听起来像是问题,但添加队列位并不会改变行为。插件是否有可能暂停正在进行的动画? – captncraig 2010-02-17 03:02:08
只是好奇,但你在测试什么浏览器? – Mark 2010-02-17 03:03:51