Fork me on GitHub

李可

导航

统计

javascript双击事件取消默认的两次单击事件

当一个元素同时具有单击和双击事件时,双击时会触发2次单击和1此双击事件。

双击会:先第1次单击 ,同时触发第2次和双击事件。

造成的不好影响:每次单击事件会延迟执行。

复制代码
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript">
        var id;
        window.onload = function () {
            document.getElementById('divdemo').onclick = function () {
                //清除的是双击事件的第2次单击事件id
                clearTimeout(id);//这句代码放setTimeout下面,也同样将下面的定时器关掉。
                id = setTimeout(function () {//不论单双击,每点击一次就会立马产生一个定时器id,产生的id和这个定时器执行与否(什么时候执行)没有关系。
                    alert(id);//单击操作
                }, 300);
                //clearTimeout(id);
            }
            document.getElementById('divdemo').ondblclick = function () {
                //清除的是双击事件的第1次单击事件id
                clearTimeout(id);
                alert(id);//双击操作
            }
        }
    </script>
</head>
<body>
    <div id="divdemo" style="width: 400px; height: 400px; background-color: red">
    </div>
</body>
</html>
复制代码

只有单击,

复制代码
    <script type="text/javascript">
        var id;
        window.onload = function () {
            document.getElementById('divdemo').onclick = function () {
                //清除的是双击事件的第2次单击事件id
                //clearTimeout(id);//这句代码放setTimeout下面,也同样将下面的定时器关掉。
                id = setTimeout(function () {//不论单双击,每点击一次就会立马产生一个定时器id,产生的id和这个定时器执行与否(什么时候执行)没有关系。
                    alert(id);//单击操作
                }, 300);
                clearTimeout(id);//只有单击时,只能放这,才会让单击事件不执行
            }
        }
    </script>

<body>
    <div id="divdemo" style="width: 400px; height: 400px; background-color: red">
    </div>
</body>
复制代码

 

posted on   李可在江湖  阅读(3307)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示