js鼠标单击和双击事件冲突问题的快速解决方法

 更新时间:2016年07月11日 10:24:50   投稿:jingxian  
下面小编就为大家带来一篇js鼠标单击和双击事件冲突问题的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

情况一

如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,第一次点击(click)会 触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,还是会触发单击(click)事件(IE7与 firefox)。

解决方法:

<button onclick="test(1)" ondblclick="test(2)"></button>
<script language="javascript">
var i = 1;
function test(n)  {
i = n; 
var val = setTimeout("call();",250); 
if(i==2){
clearTimeout(val);
}
}
function  call()  { 
if(i==1){
alert('click');
}else if(i==2){
alert('dblclick');
}
} 
</script>

解释:

第一次点击记录下点击的时间,并设置单击事件的Timeout(250ms比较合适),第二次点击时判断此时点击的时间与上次点击的时间间隔,如果小于指 定的事件间隔(比如250ms),则判断为双击事件,并clear已设置的Timeout(避免触发单击事件)。

第二种:

<title>区分单击和双击-www.jb51.net</title>
<script type="text/javascript">
var flag=0;
function clickTest()
{
 if(!flag)
 {
 setTimeout("tt2();",300);
 }
 flag++;
}
function reset()
{
 flag=0;
}
function singleClick()
{
 var result=document.getElementByIdx_x('result');
 result.innerHTML=result.innerHTML+"click<br>";
 reset();
}
function dobuleClick()
{
 var result=document.getElementByIdx_x('result');
 result.innerHTML=result.innerHTML+"dobule click<br>";
 reset();
}
function tt2()
{
 if(flag==1)
 {
 singleClick();
 }
 else
 {
 dobuleClick();
 }
}
</script>
</head>
<body>
<input type="button" ondblclick="clickTest();" onclick="clickTest();" value="click test" />
<div id="result"></div> 

以上这篇js鼠标单击和双击事件冲突问题的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JS中的几种循环和跳出方式

    JS中的几种循环和跳出方式

    这篇文章介绍了JS中的几种循环和跳出方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 前端qrcode生成二维码安装及使用示例详解

    前端qrcode生成二维码安装及使用示例详解

    二维码作为一种快速的信息识别工具,被广泛应用于各行各业,在互联网的时代,生成二维码已经成为了一项必需的技能,这篇文章主要给大家介绍了关于前端qrcode生成二维码安装及使用示例的相关资料,需要的朋友可以参考下
    2024-08-08
  • JS如何实现网站中PC端和手机端自动识别并跳转对应的代码

    JS如何实现网站中PC端和手机端自动识别并跳转对应的代码

    这篇文章主要介绍了JS如何实现网站中PC端和手机端自动识别并跳转对应的代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 关于微信jssdk实现多图片上传的一点心得分享

    关于微信jssdk实现多图片上传的一点心得分享

    这篇文章主要介绍了关于微信jssdk实现多图片上传的一点心得分享,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • 客户端js性能优化小技巧整理

    客户端js性能优化小技巧整理

    说起javascript无人不知无人不晓吧,下面是一些关于客户端JS性能的一些优化的小技巧,希望对大家有所帮助
    2013-11-11
  • ES6新特性七:数组的扩充详解

    ES6新特性七:数组的扩充详解

    这篇文章主要介绍了ES6新特性之数组的扩充,结合实例形式分析了ES6数组操作的常见方法与相关使用技巧,需要的朋友可以参考下
    2017-04-04
  • 浅谈webpack打包之后的文件过大的解决方法

    浅谈webpack打包之后的文件过大的解决方法

    这篇文章主要介绍了浅谈webpack打包之后的文件过大的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • JavaScript判断数据类型有几种方法及区别介绍

    JavaScript判断数据类型有几种方法及区别介绍

    这篇文章主要介绍了JavaScript判断数据类型有几种方法及区别介绍,本文给大家分享多种方法通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Raphael带文本标签可拖动的图形实现代码

    Raphael带文本标签可拖动的图形实现代码

    Javascript和Raphael顺便学习了一下,主要是为了实现一个可拖动的矩形同时矩形上还得显示标签,网上关于这方面的知识提的很是于是本人自不量力写了一下,感兴趣的你可不要错过了哈,希望可以帮助到你
    2013-02-02
  • javascript开发随笔二 动态加载js和文件

    javascript开发随笔二 动态加载js和文件

    js无非就是script标签引入页面,但当项目越来越大的时候,单页面引入N个js显然不行,合并为单个文件减少了请求数,但请求的文件体积却很大
    2011-11-11

最新评论