Jquery .在其他位置设置回调动画。设置加载动画2次

Jquery .在其他位置设置回调动画。设置加载动画2次,jquery,callback,scrolltop,Jquery,Callback,Scrolltop,我想这样做: 从顶部滚动至440 用动画打开#细节 加载我的id.html内部#详细信息 在此HTML内容上制作CSS动画 我想一步一步地做: 步骤2/在步骤1之后执行/ 步骤3/在步骤2之后执行/ 步骤4/在步骤3之后执行/ 但是我有一个问题:我的.load函数执行了两次。我不明白为什么 $('html,body').animate({scrollTop:(440)}, 1300,'easeInSine', function() { $('#detail').animate({heig

我想这样做:

  • 从顶部滚动至440
  • 用动画打开
    #细节
  • 加载我的
    id.html
    内部
    #详细信息
  • 在此HTML内容上制作CSS动画
  • 我想一步一步地做:

    步骤2/在步骤1之后执行/

    步骤3/在步骤2之后执行/

    步骤4/在步骤3之后执行/

    但是我有一个问题:我的
    .load
    函数执行了两次。我不明白为什么

    $('html,body').animate({scrollTop:(440)}, 1300,'easeInSine', function() {
        $('#detail').animate({height: detail_height}, 800, function() {
            $('#detail').load('pages/web/' + id + '.html', function() {
                //do something
        });
        });
    });
    

    当设置
    n
    元素的动画时,回调将发生
    n次。这就是我们想要的行为

    如果希望获得用于设置多个元素动画的单个回调,请使用promise对象

    $('html,body').animate({scrollTop:(440)}, 1300,'easeInSine').promise().done(function() {
        $('#detail').animate({height: detail_height}, 800, function() {
            $('#detail').load('pages/web/' + id + '.html', function() {
                //do something
            });
        });
    });
    
    另一种方法是只选择html或正文,而不是同时选择两者