Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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/JavaScript中,有没有一种方法可以将所有双击事件绑定到它们的单次单击等价物?_Javascript_Jquery_Events - Fatal编程技术网

在jQuery/JavaScript中,有没有一种方法可以将所有双击事件绑定到它们的单次单击等价物?

在jQuery/JavaScript中,有没有一种方法可以将所有双击事件绑定到它们的单次单击等价物?,javascript,jquery,events,Javascript,Jquery,Events,我有一些jQuery,有很多不同的点击事件。我的一些用户习惯于双击,因为我没有双击事件绑定,所以会触发两次单击事件;这可能是一种痛苦——例如,如果一次点击打开某个东西,另一次点击关闭它,双击就是一个零和游戏 是否有任何方法可以将所有双击事件绑定到它们的单次单击等价物,而无需单独编写代码?我认为将dblclick映射到click不会有帮助;我想这会让事情变得更糟 你说过你用授权来联系你的活动。您可以为自己提供一个函数,用于取消对事件处理程序的调用: //非常简单的去抖动,接受第一个事件并忽略 /

我有一些jQuery,有很多不同的点击事件。我的一些用户习惯于双击,因为我没有双击事件绑定,所以会触发两次单击事件;这可能是一种痛苦——例如,如果一次点击打开某个东西,另一次点击关闭它,双击就是一个零和游戏


是否有任何方法可以将所有双击事件绑定到它们的单次单击等价物,而无需单独编写代码?

我认为将dblclick映射到click不会有帮助;我想这会让事情变得更糟

你说过你用授权来联系你的活动。您可以为自己提供一个函数,用于取消对事件处理程序的调用:

//非常简单的去抖动,接受第一个事件并忽略
//一段时间内的后续事件
函数去BouncedHandler(handler,delay){
delay=delay | | 300;//我听说Windows使用500毫秒,但这似乎太长了
var last;
返回函数(){
var now=Date.now();
如果(上次和上次+延迟>现在){
返回false;
}
最后=现在;
返回处理程序.apply(这个,参数);
};
}
$(文档)。在(“单击”、“输入[type=button]”上,取消BouncedHandler(函数(){
$(“.container”).toggleClass(“切换打开切换关闭”);
}));
。切换打开。关闭{
显示:无;
}
.切换开关关闭。打开{
显示:无;
}

打开
关闭

我会这样做:

<input type="hidden" id='counter' value='0'>
<input type="button" value="Save" onclick="save()">

function save(){
var counter = parseInt(document.getElementById("counter").value);
counter = counter+1;

if(counter == 1){
console.log('Saving...')
}

document.getElementById("counter").value = counter;

//after 3 seconds set counter back to 0
     setTimeout(function(){
    document.getElementById("counter").value = 0;

    }, 3000)
}

函数save(){
var counter=parseInt(document.getElementById(“counter”).value);
计数器=计数器+1;
如果(计数器==1){
console.log('Saving…'))
}
document.getElementById(“计数器”).value=计数器;
//3秒钟后,将计数器设置回0
setTimeout(函数(){
document.getElementById(“计数器”).value=0;
}, 3000)
}
HTML

<button class="btn">
click me
</button>
请查收

防止点击处理程序5秒(您可以根据需要设置时间)
检查控制台以查看结果

您已经说过,我现在删除的答案(
$(document).on(“dblclick”,false);
)适用于您,尽管我意识到(并且jcubic确认)它完全错了。你说“也许这是因为我绑定事件的方式而起作用?$(文档)。在(“单击“,”likePost“,”函数(事件){”上,我认为这一定是观察错误。@T.J.Crowder-是的,你是对的(因为你错了)。如果我双击的速度足够快的话,这是另一个让它看起来可以工作的原因-稍微慢一点的dbl单击(但速度仍然足够快,可以注册为dblclick)会出现同样的问题。我想知道所有单击事件的超时是否可以完成这项工作?(第一次单击更改了更改事件的类,如果我双击的速度足够快,我仍在点击第一个事件)。也许可以使用settimeout在一定时间内阻止单击
$(document).ready(function(){

   var clickDisabled = false;
   $('.btn').click(function(){
      if (clickDisabled)
         return;

      // do your real click processing here
            console.log('hi');
      clickDisabled = true;
      setTimeout(function(){clickDisabled = false;}, 5000);
  });

});