jquery - 第二次点击击败第一次动画完成回调函数

标签 jquery

我有一个按钮,单击时会为 div 生成动画。

我正在尝试利用 $.animate() [完整] 回调函数,但遇到这样的情况:快速单击按钮两次会导致动画在第一个动画的 [完整] 回调运行之前运行两次。

请参阅此链接进行演示。 http://jsfiddle.net/zs2uf/3/

有什么想法可以防止第二次点击超过第一次的回调吗?

最佳答案

您应该在单击按钮后立即禁用该按钮,然后再执行动画。

您说您想让该按钮只能单击一次,但您要等到动画完成后再禁用该按钮。这就是为什么程序无法按照您希望的方式运行,因为在动画期间,可以再次单击该按钮。

以下是如何确保按钮只能单击一次:

$("#next").click(function(){

    var pos = parseInt($("#box").css("left")),
        newPos = pos + 100;

    // disable button immediately after the click
    // if you wait to disable, you give the user the chance to click twice
    $("#next").unbind('click');
    $("#next").attr("disabled", "disabled");

    $("#box").animate({
        "left" : newPos //move the box to the right by 100px
    }, {
        duration: 150
    });        
})

Working example

unbind()在许多浏览器中可能不是必需的,但它确保单击事件处理程序实际上从 #next 中删除。

关于jquery - 第二次点击击败第一次动画完成回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6962249/

相关文章:

javascript - 固定图像滚动移动位置

javascript - 如何将 View (cshtml) 加载到 iframe 中?

javascript - 如何在聊天中按 Enter 后重新加载页面

javascript - annotator.js 在本地工作但不在网络服务器上工作,有什么想法吗?

jquery - 如何在 Jquery 中单独选择它们

jquery - 使用 Rails 和 jQuery 处理内联编辑表单的好方法

jquery - 精细 uploader : add upload buttons in template markup

javascript - 未捕获的类型错误 : Cannot read property 'setAttribute' of null

jquery 和 bootstrap 错误

javascript获取div的值,如果它有一个类