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示例,您可以有选择地定义要解除绑定的函数……现在您的解决方案很好了!谢谢凡人,它帮助了我:)对不起,我无法给你的答案投票,因为我没有足够的声誉