javascript - .is (":animated") 选择器在动画期间返回 true 并调用两次

标签 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 被加载了两次”。

最佳答案

The result "page.php is loaded twice times ! in firebug".

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

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

关于javascript - .is (":animated") 选择器在动画期间返回 true 并调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10403866/

相关文章:

JavaScript消息系统加密

javascript - 如何使用 xPages 向客户端强制更新设计更改?

JavaScript:Promise.all 返回未定义

javascript - 使 Bootstrap 响应基于父 div 的最佳方法?

javascript - 有没有办法在导入之前将来自 api 调用的数据插入到对象中?在我能够使用数据创建变量之前,代码正在运行

javascript - 我可以将元素作为第一个参数传递给 JavaScript 中的事件处理程序的最简单方法是什么?

javascript - 在 jQuery 中禁用/启用拖放功能

jQuery 移动 : data-direction ="reverse" not emulating initial transition

javascript - 在奇数位置设置动画时在 Chrome 中抖动图像

javascript - toggleClass 用于执行两种不同的 scrollTop 方法,不起作用