jquery单击事件和双击事件冲突解决方案
作者:bea
本人需要给bootstrap-treeview的树节点添加双击事件。而该插件原生方法中不带双击事件功能。该插件的节点默认绑定的单击事件,由此引起了单击事件和双击事件的冲突。 编写测试代码 引起冲突的代码: 问题效果展示: 每一次触发双击事件都会引起两次单击事件 解决冲突的代码: 解决问题效果展示: 完美解决单击事件和双击事件冲突问题 这里主要用到两个HTMLDOMWindow对象中函数,settimeout(),clearTimeout() 我这里两个单击事件触发的
本人需要给bootstrap-treeview的树节点添加双击事件。而该插件原生方法中不带双击事件功能。该插件的节点默认绑定的单击事件,由此引起了单击事件和双击事件的冲突。
编写测试代码
引起冲突的代码:
问题效果展示:
每一次触发双击事件都会引起两次单击事件
解决冲突的代码:
解决问题效果展示:
完美解决单击事件和双击事件冲突问题
这里主要用到两个HTMLDOMWindow对象中函数,settimeout(),clearTimeout()
我这里两个单击事件触发的时间间隔设置在等于300毫秒,这里需要根据实际情况而定。
源码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div>事件监控</div>
</body>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript">
/*$(function() {
$("div").bind("click.a", function() { //单击事件
$("body").append("<p>click事件</p>");
})
$("div").bind("dblclick.a", function() { //双击事件
$("body").append("<p>dblclick事件</p>");
})
$("div").bind("mouseover.a", function() { //鼠标经过元素的事件
$("body").append("<p>mouseover事件</p>");
})
$("div").bind("mouseout.a", function() { //鼠标移出元素的事件
$("body").append("<p>mouseout事件</p>");
})
})*/
$(function() {
var timer = null;
$("div").bind("click.a", function() { //单击事件
clearTimeout(timer);
timer = setTimeout(function() { //在单击事件中添加一个setTimeout()函数,设置单击事件触发的时间间隔
$("body").append("<p>click事件</p>");
}, 300);
})
$("div").bind("dblclick.a", function() { //双击事件
clearTimeout(timer); //在双击事件中,先清除前面click事件的时间处理
$("body").append("<p>dblclick事件</p>");
})
$("div").bind("mouseover.a", function() { //鼠标经过元素的事件
$("body").append("<p>mouseover事件</p>");
})
$("div").bind("mouseout.a", function() { //鼠标移出元素的事件
$("body").append("<p>mouseout事件</p>");
})
})
</script>
</html>
以上就是jquery单击和双击事件冲突解决方案,希望对大家的学习有所帮助。
猜你喜欢
您可能感兴趣的文章:
- jQuery实现TAB选项卡切换特效简单演示
- jquery实现页面常用的返回顶部效果
- JavaScript模拟鼠标右键菜单效果
- javascript实现移动端上的触屏拖拽功能
- 基于zepto的移动端轻量级日期插件--date_picker
- 基于Javascript实现二级联动菜单效果
- jquery ajax双击div可直接修改div中的内容
- js实现文字滚动效果
- JQuery日期插件datepicker的使用方法
- jQuery日历插件datepicker用法详解
- 初步使用Node连接Mysql数据库
- 初步使用bootstrap快速创建页面
- JS动态增删表格行的方法
- 微信jssdk在iframe页面失效问题的解决措施
- 基于javascript html5实现多文件上传
- 编写高质量JavaScript代码的基本要点
- JS获取当前脚本文件的绝对路径
- Webpack 实现 AngularJS 的延迟加载
- 浅谈JS原型对象和原型链