Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从匿名单击处理函数中删除jQuery单击处理程序_Jquery_Event Handling_Anonymous Function - Fatal编程技术网

从匿名单击处理函数中删除jQuery单击处理程序

从匿名单击处理函数中删除jQuery单击处理程序,jquery,event-handling,anonymous-function,Jquery,Event Handling,Anonymous Function,我有一个匿名函数来处理在一组单选按钮上单击事件之后的过程 在这个函数中会发生一些动画,我希望禁用click事件,直到函数结束,以防止它从函数中再次触发 该函数调用每个单选按钮通用的类名: $(".question1").click( function(){ 在函数执行任何动画时,如何禁用该类元素上的任何进一步单击事件,并在动画完成后恢复 我已经尝试过removeClass()和addClass()来实现这一点,但它在函数中似乎不起作用 我也尝试过.off()和.on(),但运气都不好 单选

我有一个匿名函数来处理在一组单选按钮上单击事件之后的过程

在这个函数中会发生一些动画,我希望禁用click事件,直到函数结束,以防止它从函数中再次触发

该函数调用每个单选按钮通用的类名:

$(".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
    });
}