在上一个事件完成之前,不要执行功能(单击)

时间:2013-03-20 13:46:09

标签: javascript jquery

在上一次完成之前不要执行。如果快速单击,则脚本不正确。如果我多次单击,则无需等待完成即可执行该功能。它变得凌乱。

$(".vid1 .next, .vid2 .next").click(function(){
        $(".type2").find(".crop").find(".left").find("div:last").clone().insertAfter($(".type1").find(".crop").find(".left").find("div:last"));
        $(".type2 .crop .left div:first").animate({marginLeft: '0px'}, 0);
        $(".type1").find(".crop").find(".left").find("div:first").clone().insertBefore($(".type2").find(".crop").find(".left").find("div:first"));
        $(".type2").find(".crop").find(".left").find("div:first").animate({marginLeft: '0px'}, 0);
        $(".type1").find(".crop").find(".left").find("div:first").animate(
            {marginLeft: '0px'}, {
            duration: 500,
            complete: function() { 
            $(".type1").find(".crop").find(".left").find("div:first").remove();
            $(".type1").find(".crop").find(".left").find("div:first").animate({marginLeft: '208px'}, 0);
            }
            }); 
        $(".type2").find(".crop").find(".left").find("div:first").animate(
            {marginLeft: '208px'}, {
            duration: 500,
            complete: function() { 
            $(".type2").find(".crop").find(".left").find("div:last").remove();
            }
            }); 
    });

2 个答案:

答案 0 :(得分:1)

您可以在启动Click时将变量初始化为 True ,在完成时将其返回到 False

每次他点击,检查是否为True,然后退出该功能。

var isClicking=false;

$(".vid1 .next, .vid2 .next").click(function(){

  if(isClicking)
   return;
   isClicking=true;
        $(".type2").find(".crop").find(".left").find("div:last").clone().insertAfter($(".type1").find(".crop").find(".left").find("div:last"));
        $(".type2 .crop .left div:first").animate({marginLeft: '0px'}, 0);
        $(".type1").find(".crop").find(".left").find("div:first").clone().insertBefore($(".type2").find(".crop").find(".left").find("div:first"));
        $(".type2").find(".crop").find(".left").find("div:first").animate({marginLeft: '0px'}, 0);
        $(".type1").find(".crop").find(".left").find("div:first").animate(
            {marginLeft: '0px'}, {
            duration: 500,
            complete: function() { 
            $(".type1").find(".crop").find(".left").find("div:first").remove();
            $(".type1").find(".crop").find(".left").find("div:first").animate({marginLeft: '208px'}, 0);
            }
            }); 
        $(".type2").find(".crop").find(".left").find("div:first").animate(
            {marginLeft: '208px'}, {
            duration: 500,
            complete: function() { 
            $(".type2").find(".crop").find(".left").find("div:last").remove();
            isClicking=false;
            }
            }); 
    });

答案 1 :(得分:0)

首先尝试禁用该按钮,并在完成后启用该按钮。

$(".vid1 .next, .vid2 .next").click(function(){
 $(this).attr("disabled", true);   
 $(".type2").find(".crop").find(".left").find("div:last").clone().insertAfter($(".type1").find(".crop").find(".left").find("div:last"));
        $(".type2 .crop .left div:first").animate({marginLeft: '0px'}, 0);
        $(".type1").find(".crop").find(".left").find("div:first").clone().insertBefore($(".type2").find(".crop").find(".left").find("div:first"));
        $(".type2").find(".crop").find(".left").find("div:first").animate({marginLeft: '0px'}, 0);
        $(".type1").find(".crop").find(".left").find("div:first").animate(
            {marginLeft: '0px'}, {
            duration: 500,
            complete: function() { 
            $(".type1").find(".crop").find(".left").find("div:first").remove();
            $(".type1").find(".crop").find(".left").find("div:first").animate({marginLeft: '208px'}, 0);
            }
            }); 
        $(".type2").find(".crop").find(".left").find("div:first").animate(
            {marginLeft: '208px'}, {
            duration: 500,
            complete: function() { 
            $(".type2").find(".crop").find(".left").find("div:last").remove();
            }
            }); 
  $(this).removeAttr("disabled");
    });