双击和单击事件冲突解决方法

双击和单击事件冲突解决方法:
关于单击事件和双击事件,如果单独拿出来都是非常简单,这里也就不多介绍了,具体可以参阅jQuery的click事件jQuery的dblclick事件一章节,但是如果同一个元素同时绑定了单击事件和双击事件,那么就会造成冲突现象,比如我们双击此元素指向触发双击事件,但是也完全满足单击事件的条件,不但双击事件触发了,单击事件同样也会被触发,下面就通过代码实例介绍一下如何解决它们的冲突问题,代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function(){
  var timer=null;
  $("#bt").bind("click",function(){
    clearTimeout(timer);
    timer=setTimeout(function(){
      $("#thediv").append("单击事件触发");
    },300);
  }) 

  $("#bt").bind("dblclick",function(){
    clearTimeout(timer);
    $("#thediv").append("双击事件触发");
  })
})
</script>
<body>
<div id="thediv"></div>
<input type="button" id="bt" value="查看效果"/>
</body>
</html>

以上代码实现解决了单击和双击冲突的现象,单击或者双击按钮的时候只会有一个事件触发。
一.实现原理:
原理其实及其简单,就是延迟单击事件处理函数中相关代码的执行(当然并不是说单击事件没有触发),也就是当第一次点击按钮的时候,如果300毫秒内没有点击第二次,那么就认为这是一次单击事件,然后执行相关的代码,如果300毫秒内又点击了第二次,那么就会取消定时间函数的执行,单击事件处理函数中的相关代码将不会被执行,只会执行双击事件处理函数中的代码。
二.相关阅读:
1.bind()可以参阅jQuery的bind()方法一章节。
2.clearTimeout()函数可以参阅window对象的clearTimeout()方法一章节。
3.setTimeout()函数可以参阅window对象的setTimeout()方法一章节。 
4.append()函数可以参阅jQuery的append()方法一章节。

原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=13135

更多内容可以参阅:http://www.softwhy.com/jquery/

时间: 2024-11-08 15:04:19

双击和单击事件冲突解决方法的相关文章

apache与IIS共用80端口冲突解决方法

如果同一台电脑安装了apache和iis,会提示80端口冲突,如何解决apache与iis 80端口冲突的问题呢,并且同时使用apache和iis 将apache设为使用80端口,IIS使用其它端口,比如81,然后将apache作为IIS的代理. 在httpd.conf里面,取消下面四行的注释: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connec

SVN冲突解决方法

SVN冲突解决方法     遇到种情况,首先,你要冷静 我们来分析一下产生冲突额原因!(模拟一下) 我们将一个名为CODE.txt的文件上传到svn服务中,内容如下: 然后你的小伙伴check out下来改成了: “hello world! 今天是21号” 接着就commit(svn上的最新版本就是这个了) 接着,你又check out下来改成了: “hello world! 今天是22号” 当你commit的时候,就---------- 冷静 你打开原来的原文件夹会发现

[转载]CSS&lt;a href&gt;链接样式冲突解决方法!

给自己这个初学者看的! 原文地址:CSS<a  href>链接样式冲突解决方法!作者:叶朗 这里我简要的说一下:关于a href样式冲突 首先我有一个外部CSS样式文件(index.css)里面直接用a:link a:active直接写了 而网站首页和其他栏目页都调用<link href="css/index.css" rel="stylesheet" type="text/css" />,但是我想再在首页加上新的链接并且

Mint-ui中loadmore(上拉加载下拉刷新)组件在ios中滑动会触发点击事件的解决方法

bug说明: Mint-ui中loadmore(上拉加载下拉刷新)组件 在 使用fastclick的情况下 ,在ios设备中滑动会触发点击事件: 解决方法: 我是按需引入,去项目中找到loadmore下的index.js,全部引入的要找mint下面mint-ui.common.js 路径如下:你的项目名/node_modules\mint-ui\lib\loadmore\index.js 搜索 handleTouchEnd ,记得写event进去 handleTouchEnd: function

JQuery如何实现双击事件时不触发单击事件,解决鼠标单双击冲突问题

在jQuery的事件绑定中,如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click). 但有时候我们希望在执行双击事件的时候不去出发单击事件,那究竟该如何实现呢? 少bb 上代码 : <!DOCTYPE html> <html lang="en"> <head> <meta charset

js(jquery)解决input元素的blur事件和其他非表单元素的click事件冲突的方法

HTML结构:很简单,就一个input,一个div,能说明问题就OK了: <input type="text" value="默认值"><br/><br/><div>搜索</div> 想要实现的结果: 1.input框获取焦点时value为“”,失去焦点时value为“默认值”:-----这个很好实现: 2.当在input框中输入要搜素的内容后,点击div搜索,要求控制台打印输出要搜素的内容(当然每个项目的

GridView的点击事件冲突解决

在开发的时候,经常可能遇到ListView或GridView控件点击事件与Item点击事件冲突的问题.原因是Item布局中的button或ImageButton强制获取了item的焦点,解决方式之一是:只要设置Item布局中的button的focusable为false即可,另外可以在Item布局的根节点添加属性android:descendantFocusability="blocksDescendants"也可以解决. 今天在开发一界面的时候遇到了点击事件冲突问题,并不是I控件本身

盘点ip地址冲突解决方法

日常生活中常会遇到主机报IP冲突的情形,那么出现该问题该如何排查: 1.源头追溯,查日志 运行——> cmd——> eventvwr.msc  打开系统日志,依次进入Windows日志-系统,进入查看.找到类别为错误,来源为Tcpip的日志并打开,我们就能找到冲突主机的物理地址: 以上说明,检测到240e:fa:c1b4:5300:3479:168b:88f5:2 和 0C-84-DC-90-D9-38 两块网卡存在冲突,这就是冲突来源!(对比发现,该地址实际并不是本机网卡,当然如果是本机,可

UITableView添加UITapGestureRecognizer与didSelectRowAtIndexPath冲突解决方法

在UITableView上添加了UITapGestureRecognizer后会导致didSelectRowAtIndexPath失效,原因是UITapGestureRecognizer会截取了tableView的touch事件,导致无法响应行选择,解决方法是重写UIGestureRecognizerDelegate中的 1 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(