jquery - 如何在动画运行时暂时禁用 JQuery 单击处理程序?

标签 jquery html event-handling click onclicklistener

我对 JQuery 还是比较陌生,我对如何解决以下问题感到困惑。我想暂时禁用两个翻转功能(响应点击事件),直到淡入淡出动画结束。

在我下面的内容中,函数在动画进行时仍在运行,因此两个 div(卡片背面和卡片内容)同时显示。

$(document).ready(function(){

  $("#card-back").hide();
  $(".flip-back").hide();

  function firstflip(){
    $(".flip-back").show();
    $(".flip").hide();
    $("#card-content").fadeToggle("fast");
    $("#card-back").delay(300).fadeToggle("fast");
  }

  function secondflip(){
    $(".flip-back").hide();
    $(".flip").show();
    $("#card-back").fadeToggle("fast");
    $("#card-content").delay(300).fadeToggle("fast");
  }

  $(".flip").click(function(){
    $(".flip-back").unbind("click");
    firstflip();
    setTimeout(function(){
      $(".flip-back").bind("click",secondflip);
    },2000);
  });

  $(".flip-back").click(function(){
    $(".flip").unbind("click");
    secondflip();
    setTimeout(function(){
      $(".flip").bind("click",firstflip);
    },2000);
  });

});

感谢我在这件事上能得到的任何帮助!

编辑:为清楚起见,我现在可以淡入淡出分离,但我需要有关如何延迟将点击重新绑定(bind)到翻转功能的帮助(以避免动画堆叠队列连续多次点击)。

最佳答案

尝试 Callback ,一项功能将使一个函数在执行之前等待另一个函数完成。

代码是这样的:

function firstflip(){
    $(".flip-back").show();
    $(".flip").hide();
    $("#card-content").fadeToggle("fast",function(){
         $("#card-back").delay(300).fadeToggle("fast");
    });

}

关于jquery - 如何在动画运行时暂时禁用 JQuery 单击处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396093/

相关文章:

javascript - 将选项 ID 值传递给 Controller ​​并通过 onclick 从另一个 Blade View 检索

javascript - 使用 JavaScript/jQuery 函数打开和关闭 HTML 功能

javascript - 如何告诉 JavaScript 什么都不做?

javascript - 提交长内容的 iframe 表单时,感谢信息不可见,需要向上滚动父级才能看到

html - 如何使用 R 从 iframe 的输入标签中抓取数据

swift - 使用选择器时如何处理回调?

jquery - 在 Chrome 中使用 jquery 的文本输入时未触发更改事件

页面上的 HTML 垂直可调整大小区域

javascript - 无法使用 jquery 的单击事件处理程序来检测右键单击

javascript - Jquery On() 'click' 处理每件事?