.is(“:animated”)选择器在动画期间返回true并且两次调用

时间:2012-05-01 20:26:16

标签: javascript jquery jquery-animate

我在jquery :animated选择器中遇到问题,我在jquery animate函数中使用回调函数在动画完成后调用ajax页面,但问题是:通过ajax调用调用页面双倍!

$('#elemId').click(function(){
$('html,body').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){
        $('#sections_display').load('page.php');
});
});

结果“page.php加载了两次!在firebug中。”

所以我试过了:

$('#elemId').click(function(){
       $('html,body').animate({scrollTop: $('#sections_display').offset().top-100}, 500);
});

if ($('html,body').is(":animated")) {
     $('#sections_display').load('page.php');
}

问题是if ($('html,body').is(":animated"))在页面动画期间始终返回true但我希望在动画完成后返回true。

我也试过了:

$('#elemId').click(function(){
$('html,body').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){
    if ($(this).is(":animated")) {
        $('#sections_display').load('page.php');
    }
});
});

结果“page.php被加载两次”。

1 个答案:

答案 0 :(得分:2)

  

结果“page.php加载了两次!在firebug中。”

那是因为您将事件附加到htmlbody。试试html

$('#elemId').click(function(){
    $('html').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){
            $('#sections_display').load('page.php');
    });
});