Jquery 在动画期间取消绑定单击和鼠标悬停事件

Jquery 在动画期间取消绑定单击和鼠标悬停事件,jquery,html,Jquery,Html,如何在动画完成之前解除单击和鼠标悬停事件的绑定,然后再进行绑定?当动画开始时,请使用以下选项: $('#foo').unbind(); //unbinds all $('#foo').unbind('click'); //only click event $('#foo').unbind('mouseover'); //only mouseover event 然后在完成时绑定事件 这是一把小提琴: 小提琴的基础是: function aClick(

如何在动画完成之前解除单击和鼠标悬停事件的绑定,然后再进行绑定?

当动画开始时,请使用以下选项:

$('#foo').unbind();              //unbinds all
$('#foo').unbind('click');       //only click event
$('#foo').unbind('mouseover');   //only mouseover event
然后在完成时绑定事件

这是一把小提琴:

小提琴的基础是:

function aClick() { alert("YAY! I'm working") }

$("#animateBtn").click(function () {
    //First Unbind
    $("#theone").unbind('click', aClick).text("Does nothing...");

    //Then Animate
    $("#block").animate({
        width: "70%",
        opacity: 0.4,
        marginLeft: "0.6in",
        fontSize: "3em",
        borderWidth: "10px"
    }, 1500,
    //On animation complete bind back... 
    function () {$("#theone").click(aClick).text("Can Click!");}
   );
});

你可以像这样解开事件

$("p").unbind("click,mouseover");
用于删除,直到动画完成

$( "#clickme" ).click(function() {
  $( "#book" ).animate({
    opacity: 0.25,
    left: "+=50",
    height: "toggle"
  }, 5000, function() {
     $("p").unbind("click,mouseover");// herer unbind done  
  });

$("p").bind("click,mouseover");// here bind again  
    });
您可以使用
is(:animated)
检查当前是否正在运行动画

$('element').click(function(){

     if($(this).is(':animated')){

         // the element is currently animated

     }else{

         // the element is not being animated

     }

})
如果要停止当前正在运行的动画,可以使用。使用
stop(true,true)
,如果动画当前正在元素上运行,则停止,并跳到末尾

$('#clickme').unbind('click').unbind('mouseover');
$( "#book" ).animate({
            opacity: 0.25,
            left: "+=50",
            height: "toggle"
        }, 5000, function() {
             $('#clickme').bind('click', click_function).bind('mouseover', mouseover_function)
        });  
$( "#clickme" ).click(click_function);
function click_function(){
     //do something
}
function mouseover_function(){
     //do something
}

这将在动画之前从元素中取消绑定单击,并在动画完成后的回调中重新绑定它

如果要在一段时间内禁用链接,则使用类更容易、更快速。请看下面:

$('link').click(function(event){
  if(event.hasClass('disabled'))
    return;
  else{
    event.animate(/*some args*/ , function(){   // call back function
      event.removeClass('disabled');
    });
  }
});
您只需为
.disabled
添加css,即可禁用链接


这段代码比使用解除绑定更快,因为它没有开销。

不要解除事件处理程序的绑定。只需在动画打开时设置一个标志,并在完成时重置它。现在,在这些事件处理程序中,检查是否设置了该标志,如果设置了,则返回false,否则让处理程序执行。

我认为他/她希望防止
单击
鼠标悬停
事件在动画期间触发元素,而不是停止动画。这不是一个安全的解决方案,因为如果有多个事件处理程序订阅一个事件,那么它将解除所有事件的绑定,最好将特定的事件处理程序函数作为secound参数发送到unbind。@AhmadF查看我的fiddle示例,您可以有选择地定义要解除绑定的函数……现在您的解决方案很好了!谢谢凡人,它帮助了我:)对不起,我无法给你的答案投票,因为我没有足够的声誉