为了账号安全,请及时绑定邮箱和手机立即绑定

.animate()的回调被两次调用

.animate()的回调被两次调用

Qyouu 2019-10-17 14:49:15
由于添加了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 。


查看完整回答
反对 回复 2019-10-17
?
扬帆大鱼

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,因此。(非常抱歉,缺少换行符,猜测注释未显示这些内容)

查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 813 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信