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

由于添加了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动画速度设置为无益!


我认为这与动画队列有关,但是我不知道如何找到解决方法,尤其是为什么会这样。


Qyouu
浏览 814回答 3
3回答

开满天机

若要获得单个回调以完成多个元素动画,请使用延迟的对象。$(".myClass").animate({  marginLeft: "30em"}).promise().done(function(){  alert("Done animating");});有关Promise和Deferred对象的详细说明,请参见jQuery API 。

扬帆大鱼

我通过创建一个标记来处理它: var ranOne = false; $('body,html').animate({ scrollTop: scrollTo }, scrollTime, 'swing', function () { if (ranOne) { ...action... ranOne = false; } else { ranOne = true; } }); 感觉很hacky,但是首先必须使用“ body,html”是一种hacky,因此。(非常抱歉,缺少换行符,猜测注释未显示这些内容)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery