关于单击与双击事件

作者: Gaarahan | 来源:发表于2019-05-04 22:04 被阅读0次

鼠标的单击与双击都是我们常用的鼠标事件,然而这两个事件一起触发时便有了问题


问题

如下,我想在这个div中同时设置单击事件和双击事件,并让两者执行不同的处理函数

<div onclick="console.log('click')" ondbclick="console.log('dbclick')">
Test
</div>

但事实上,在单击这个div时,你会看到这样的输出:

click
click
dbclick

这意味着,每个双击事件将会触发两次单击事件以及一次双击事件,这让想用单双击来触发不同的事件的我就很为难了


解决

该问题的解决类似于函数节流,在进行点击后,借助setTimeout等待一段时间再执行单击事件,在该时间内,若没有进行下一次点击,就认为进行了单击,否则,就取消前面的定时器,转而触发双击事件

  • 简单示例
let div = document.querySelector('.con');
let firstClick = false;
div.onclick = ()=>{
  if(!firstClick){
    firstClick = setTimeout(()=>{
      onClick();
      firstClick = false;
    },300);
  }
  else{
    clearTimeout(firstClick);
    onDoubleClick();
    firstClick = false;
  }
}
function onClick(){
  console.log('click');
}
function onDoubleClick(){
  console.log('double click');
}

相关文章

  • 关于单击与双击事件

    鼠标的单击与双击都是我们常用的鼠标事件,然而这两个事件一起触发时便有了问题 问题 如下,我想在这个div中同时设置...

  • javascript笔记10

    事件处理程序 焦点事件 鼠标事件-单击与双击 鼠标事件-mouserover/mouserout/mousedow...

  • js基本事件

    单击事件:onclick:单击事件ondbclick:双击事件 鼠标事件:onmousemove:鼠标移动事件on...

  • 实现html/js同时启用单双击事件

    在同一个dom元素同时启用了单击和双击事件时,双击会触发两次单击事件和一次双击事件,并且触发顺序是:单击1 -> ...

  • 五、jQuery事件

    一、鼠标事件 1、鼠标点击 注意1、双击事件伴随着单击事件,因此双击事件会触发两次单击事件2、单击事件又伴随着mo...

  • jQuery系列(四) -- 事件

    鼠标事件 .click() ==> 单击事件 .dblclick() ==> 双击事件 .mousedown() ...

  • JavaScript ☞ day3

    JavaScript基础学习笔记之JavaScript进阶 焦点事件 鼠标事件-单击与双击 鼠标事件-mouseo...

  • JS中的事件

    概念:行为。鼠标事件:onclick 左键单击ondblclick 双击oncontextmenu 右键单击...

  • jQuery事件(1)

    鼠标事件 1、click()(单击)& dbclick()(双击)事件 ①$("p").click() ②$(...

  • 事件

    事件触发方法:onclick="单击触发事件";ondblclick="双击触发事件";onmousedown="...

网友评论

    本文标题:关于单击与双击事件

    本文链接:https://www.haomeiwen.com/subject/zsjfvftx.html