从匿名单击处理函数中删除jQuery单击处理程序
我有一个匿名函数来处理在一组单选按钮上单击事件之后的过程 在这个函数中会发生一些动画,我希望禁用click事件,直到函数结束,以防止它从函数中再次触发 该函数调用每个单选按钮通用的类名:从匿名单击处理函数中删除jQuery单击处理程序,jquery,event-handling,anonymous-function,Jquery,Event Handling,Anonymous Function,我有一个匿名函数来处理在一组单选按钮上单击事件之后的过程 在这个函数中会发生一些动画,我希望禁用click事件,直到函数结束,以防止它从函数中再次触发 该函数调用每个单选按钮通用的类名: $(".question1").click( function(){ 在函数执行任何动画时,如何禁用该类元素上的任何进一步单击事件,并在动画完成后恢复 我已经尝试过removeClass()和addClass()来实现这一点,但它在函数中似乎不起作用 我也尝试过.off()和.on(),但运气都不好 单选
$(".question1").click( function(){
在函数执行任何动画时,如何禁用该类元素上的任何进一步单击事件,并在动画完成后恢复
我已经尝试过removeClass()和addClass()来实现这一点,但它在函数中似乎不起作用
我也尝试过.off()和.on(),但运气都不好
单选按钮本身在函数中被禁用,但由于函数是在类名上调用的,因此单击事件仍会激发
非常感谢。我会走另一条路,如果元素正在设置动画,我只需检查单击处理程序,在这种情况下,只需返回,以便您必须使用选择器,如下所示:
$(".question1").click( function(){
if ( $('#element').is(':animated') ) {
return;
}
//rest of code
});
可以禁用“单击”按钮,然后在动画完成后重新启用它
$(".question1").click( function(){
var that = this;
$(this).attr('disabled','disabled');
$('.anim_div').animate({
opacity: 0.25,
left: '+=50',
height: 'toggle'
}, 5000, function() {
$(that).attr('disabled',false);
});
});
对于一个以上的动画,你可以考虑使用DEFRIED,来检测所有动画何时完成。
一定是出了什么问题…开/关功能非常有效,类选择器也很有效
$(".question1").click( function(){
var that = this;
$(this).attr('disabled','disabled');
$('.anim_div').animate({
opacity: 0.25,
left: '+=50',
height: 'toggle'
}, 5000, function() {
$(that).attr('disabled',false);
});
});
你能帮我写些密码吗?像小提琴一样拨弄,以便我们能尽力帮助
如果您无法提供代码,我将尝试:
// triggered only if the class is not disable
$(".question1:not(:disabled)").on('click', function(){
// do something...
});
或
function theClick(){
$(".question1").on('click', function(){
// do something...
});
}
function theAnimation(){
$("#someId").on('click', function(){
$(".question1").off('click'); // disable the click
// do some animation
// do more...
// and more...
theClick(); // finish, so re-enable
});
}