jquery - 阻止新的 CSS3 和 jQuery 动画,直到前一个动画完成

标签 jquery css jquery-animate css-transitions

我在做什么:

我正在使用一个名为 Transit 的 jQuery 插件在响应式幻灯片中处理一些 3D 动画。

问题:

一切正常,直到您快速点击“下一个”或“上一个”——在动画完成之前。我见过一些类似的问题,但由于这些技术上的 CSS 动画,答案似乎对我不起作用。 如何在动画完成之前禁用导航功能?

我还应该注意,我现在使用的是按键,但在最终版本中我也会有按钮可以点击。因此,即使有几种不同的方式参与幻灯片放映,该方法也应该有效。

工作示例 › jsFiddle

剥离代码:

$(document).ready(function () {

// Define the function to play forward
function playForward() {
    // Do Stuff
}

// Define the function to play reverse
function playReverse() {
    // Do Stuff
}

// Animate on keypress
$(document).keydown(function (e) {
    var keyCode = e.keyCode || e.which,
        arrow = {
            left: 37,
            up: 38,
            right: 39,
            down: 40
        }, $status = $('#status');

    switch (keyCode) {
        case arrow.left:
            playReverse();
            break;
        case arrow.up:
            //
            break;
        case arrow.right:
            playForward();
            break;
        case arrow.down:
            //
            break;
    }
});
});

最佳答案

设置一个变量来跟踪动画过程。 当您在按键时触发动画时,将变量设置为 true;

var isTransitioning = true;

在播放函数的顶部添加此行以检测它是否正在转换,如果它不执行该函数。

if ( isTransitioning ) { return false; }

检测过渡结束How do I detect a transition end without a JavaScript library?并将变量设置回 false。

关于jquery - 阻止新的 CSS3 和 jQuery 动画,直到前一个动画完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14792161/

相关文章:

javascript - ajax调用后如何重新初始化Owl Carousel?

jquery - bootstrap 的分段按钮下拉列表在 firefox 27.0.1 中不起作用

jquery - 如何阻止 JQuery Animate 函数移动整个页面

javascript - 需要使用字符串滚动到具有相同 ID 的 div,而不使用 anchor 标记

css - "Input Submit"跨浏览器兼容性

javascript - jquery animate 隐藏滚动条

javascript - 多按钮点击事件

javascript - 如何使用 jquery 更改文本值

jquery - 使用Jquery显示模态 "please wait"对话框消息

html - 从 HTML 横向打印