Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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
Javascript 完成某项操作后是否重置.one(';单击';)?_Javascript_Jquery_Click_Timeout_Reset - Fatal编程技术网

Javascript 完成某项操作后是否重置.one(';单击';)?

Javascript 完成某项操作后是否重置.one(';单击';)?,javascript,jquery,click,timeout,reset,Javascript,Jquery,Click,Timeout,Reset,为了防止连续两次触发事件,可以这样做吗 $('.examplediv').one('click', function() { //doing a bunch of stuff //somehow rebind the .one('click') <------ }); 但是,如果我真的很快地双击//做一大堆事情,它仍然会触发不止一次 如果我超时,它应该是这样的吗 $('.examplediv').on('click', function() { if(!$(thi

为了防止连续两次触发事件,可以这样做吗

$('.examplediv').one('click', function() {
    //doing a bunch of stuff
    //somehow rebind the .one('click') <------
});
但是,如果我真的很快地双击//做一大堆事情,它仍然会触发不止一次

如果我超时,它应该是这样的吗

$('.examplediv').on('click', function() {
    if(!$(this).data('click_running')){
        $(this).data('click_running', true);
        //doing a bunch of stuff
        setTimeout(function() {
            $(this).data('click_running', false);
        }, 2500);
    }
});
如果我双击它,它至少不会连续触发两次,但根据上面的代码,即使超时,我也不能再按它了?显然我做错了什么事。

只要使用

您可以尝试向元素添加一个“running”标志,以阻止事件(如果它已经在运行)

$('.examplediv').on('click', function() {
    if(!$(this).data('click_running')){
        $(this).data('click_running', true);
        //do some stuff

        //make the .examplediv accept another click event?
        $(this).data('click_running', false);
    }
});

e、 preventDefault或.stop()您想对所有元素只触发一次click事件。examplediv元素还是您的问题@A.Wolff:我想他想在元素上运行click事件时阻止它。你问是否可以重新绑定新的/相同的(“click”)事件?是的,我想重新绑定相同的一个。click事件。我尝试过这个方法,但问题是如果你快速双击,它仍然会触发两次事件。大多数用户不会双击,但我仍然不希望这成为可能。使用one.click不可能双击,但以后也不可能再次单击,这就是为什么我想重新绑定one.click(如果可能)。
$('.examplediv').off('click');
$('.examplediv').on('click', function() {
    if(!$(this).data('click_running')){
        $(this).data('click_running', true);
        //do some stuff

        //make the .examplediv accept another click event?
        $(this).data('click_running', false);
    }
});