HTML中A标签实现单击和双击事件同时存在

记录下自己在项目中遇到的小问题。就是A标签需要同时实现单击和双击两个事件。直接看代码

 <ul class="level">
    <li>
      <a href="javascript:;">A标签</a>
    </li>
  </ul>
<script>
  var i = 0;
  $("ul.level li a").on('click', function () {
    i++;
    setTimeout(function () {
      if(i == 1) {
        alert('这是单击')
      }
      i = 0;
    }, 300);
    if (i > 1) {
      alert('这是双击');
      i = 0;
    }
  })
</script>

不知道为什么移动端不能触发jQuery的dblclick事件,所以在请教同学才解决。

本人小白,如果有什么问题希望大家一起探讨一起进步,每天进步一小点。

MUI(Material UI)是一个基于React的UI组件库,它提供了一个名为`Input`的组件用于处理文本输入。在MUI的`Input`组件,并不像原生HTML那样直接支持双击事件,因为这个库通常专注于常见的单击事件和焦点操作。 然而,你可以通过自定义`InputLabel`(输入框标签)、`InputProps`或添加一个额外的`useEffect`钩子来模拟或实现双击事件。例如: ```jsx import React, { useState, useEffect } from 'react'; import MuiInput from '@material-ui/core/Input'; import InputLabel from '@material-ui/core/InputLabel'; const CustomizedInput = (props) => { const [doubleClickCount, setDoubleClickCount] = useState(0); const handleClick = () => { if (doubleClickCount === 1) { // 执行双击动作 console.log("这是双击"); } setDoubleClickCount((prevCount) => prevCount % 2 + 1); // 模拟每次点击加一,双击计数翻倍 }; useEffect(() => { let timerId; const handleMouseDown = (event) => { timerId && clearTimeout(timerId); timerId = setTimeout(() => { if (!event.target.contains(document.activeElement)) { handleClick(); } }, 500); // 设置500毫秒的延迟 }; return () => { document.removeEventListener('mousedown', handleMouseDown); }; }, []); return ( <div> <InputLabel htmlFor="customized-input">双击示例</InputLabel> <MuiInput id="customized-input" onBlur={handleClick} onMouseDown={handleMouseDown} /> </div> ); }; // 使用CustomizedInput组件 <CustomizedInput /> ``` 在这个例子,我们监听了鼠标按下(mousedown)事件,在一定时间内如果用户没有释放鼠标,那么就认为是双击,并触发`handleClick`函数。请注意,这并不是MUI官方提供的功能,而是自定义的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值