mousedown、mouseup、click

本文详细解释了JavaScript中的鼠标事件mousedown、mouseup和click的触发条件、顺序,以及如何在实际场景中,如拖拽和点击处理中避免冲突,推荐使用mousedown、mousemove和mouseup的组合来判断操作类型。

1、触发时机

  • mouseddown:鼠标移动到元素上方,并按下鼠标时触发,不区分左右键。
  • mouseup:在元素上松开鼠标时触发,不区分左右键。
  • click:鼠标停留在元素上方,按下鼠标左键,并且松开鼠标左键时触发,区分左右键。

2、触发顺序

  • 左键:在同一个元素上按下、并松开,会依次触发mousedown、mouseup、click,前一个事件执行完才会执行下一个事件。
  • 右键:在同一个元素上按下、并松开,会依次触发mousedown、mouseup,前一个事件执行完才会执行下一个事件。

3、场景

一般是用mousedown+mousemove配合做拖拽等,用click做点击,但是如果这两个事件同时存在的时候,执行click的时候会有干扰,因此建议用mousedown+mousemove+mouseup配合,在mouseup中判断是拖拽还是点击,不需要注册click。

// 如果鼠标移动,则是拖拽事件,如果鼠标不移动,则是点击事件
var isMove;
div.addEventListener('mousedown', (e) => {
    isMove = false;
})
div.addEventListener('mousemove', (e) => {
    isMove = true;
})
div.addEventListener('mouseup', (e) => {
    if (!isMove) {
       // 鼠标不移动,则为点击
       // .......
    }
})

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值