1

我在 jquery:animated选择器中遇到问题,我使用 jqueryanimate函数中的回调函数在动画完成后调用 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 被加载了两次”。

4

1 回答 1

2

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

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

$('#elemId').click(function(){
    $('html').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){
            $('#sections_display').load('page.php');
    });
});
于 2012-05-01T20:28:49.247 回答