由于添加了scrollTop-animation,因此回调的某些部分被调用了两次:$('html, body').animate({scrollTop: '0px'}, 300,function() { $('#content').load(window.location.href, postdata, function() { $('#step2').addClass('stepactive').hide().fadeIn(700, function() { $('#content').show('slide',800); }); });});它似乎只重复了一次.show(),至少我没有第二次调用load()或.fadeIn()get 的印象。在.show()得到尽快,因为它已经完成了第一次重复。0顺便说一下,将scrollTop动画速度设置为无益!我认为这与动画队列有关,但是我不知道如何找到解决方法,尤其是为什么会这样。
3 回答
开满天机
TA贡献1786条经验 获得超13个赞
若要获得单个回调以完成多个元素动画,请使用延迟的对象。
$(".myClass").animate({
marginLeft: "30em"
}).promise().done(function(){
alert("Done animating");
});
有关Promise和Deferred对象的详细说明,请参见jQuery API 。
扬帆大鱼
TA贡献1799条经验 获得超9个赞
我通过创建一个标记来处理它: var ranOne = false; $('body,html').animate({ scrollTop: scrollTo }, scrollTime, 'swing', function () { if (ranOne) { ...action... ranOne = false; } else { ranOne = true; } });
感觉很hacky,但是首先必须使用“ body,html”是一种hacky,因此。(非常抱歉,缺少换行符,猜测注释未显示这些内容)
- 3 回答
- 0 关注
- 813 浏览
添加回答
举报
0/150
提交
取消