实际工作中,我们经常会遇到在同一个元素上,绑定多种事件类型,比较常见的是单击事件和一些鼠标事件,一般而言影响不大。但是如果同时绑定单击事件和双击事件呢?

其实,只要能够想明白的话,解决方案也比较简单,我们想象一下单击事件执行过程:mousedown, mouseup, click。双击事件的执行过程呢?mousedown, mouseup, click; mousedown, mouseup, click。仔细看,其实双击事件就是执行了两次单击事件,那这种情况下,怎么才能避免触发单击事件呢?

奥秘就在于延迟定时器setTimeout,单击事件延迟执行,如果检测到连续点击的话,就认为是双击事件,不在执行单击事件。

//  单击事件
var timer = null;
$('.mask-body').on('click', '.leaver-student', function () { // 点击输入框展开下拉列表
clearTimeout(timer);
timer = setTimeout(function () {
  // 这里采用执行自定义事件的方式
$('.leaver-student').trigger('slide');
}, 300);   // 延迟300ms执行单击事件
});
//  双击输入框时可以输入学生姓名  双击事件
$('.mask-body').on('dblclick', '.leaver-student', function (ev) {
ev.stopPropagation();
clearTimeout(timer);
$('.leavers li').trigger('click');
$(this).removeAttr('readonly').val('').focus();
});

 由此扩展出去,在触摸屏上触发滑动事件时,为什么没有触发单击事件呢?

事实上采用的是相同的方式,在点击事件时,延迟执行,以便设备确认这次操作究竟是不是真正的点击事件。  

jquery双击事件会触发单击事件的更多相关文章

  1. jQuery 双击事件(dblclick)时,不触发单击事件(click)

    我这是转载的文字 原文地址:http://www.cnblogs.com/wyblog/archive/2011/12/15/2289219.html 万恶的双击事件啊!! 在jQuery的事件绑定中 ...

  2. [转]jQuery 双击事件(dblclick)时,不触发单击事件(click)

    例1: 链接:http://www.w3school.com.cn/jquery/event_dblclick.asp HTML 系列教程 浏览器脚本 服务器脚本 ASP.NET 教程 XML 系列教 ...

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

    在jQuery的事件绑定中,如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblcli ...

  4. JQuery如何实现双击事件时不触发单击事件

    单击和双击事件的执行顺序: 单击(click):mousedown,mouseout,click: 双击(dblclick):mousedown,mouseout,click , mousedown, ...

  5. jquery动态添加元素无法触发绑定事件的解决方案。

    jquery动态添加元素无法触发绑定的事件的解决方案. ╭(●`∀´●)╯二狗最近在工作中遇到一个问题,即当用jquery动态添加元素后,发现给动态添加的元素却无法触发事件(╯#-_-)╯╧═╧ ( ...

  6. jquery 赋值时不触发change事件解决

    $("#optionsId").change(function(){ $("#selectOptionsText").val('测试'); }); $(&quo ...

  7. js文本框失去焦点事件与按钮单击事件的冲突问题

    <input type="text" id="txt" name="txt"/> <input type="bu ...

  8. ztree根据treeId展开指定节点并触发单击事件

    ztree.expandNode(ztree.getNodeByParam("id",treeId,null));//展开指定节点 ztree.selectNode(ztree.g ...

  9. Vue自定义事件:触发自定义事件

    一 项目结构 二 子组件(Mongo.vue) <template> <button @click="eat">按钮</button> < ...

随机推荐

  1. dashboard无法查到endpoint, counter

    问题 使用Open-falcon时,Agent 推送metrics后,无法在Dashboard上显示.将Agent的hostname 修改后,却可以. 解决办法 查看Agent log,推送到tran ...

  2. S域传递函数的零点和极点

    传递函数的极点就是对应微分方程的特征根(回忆一下,$\frac{1}{s+a}$是$e^{-a t}$的Laplace变换),因此它们决定了系统自由运动的模态. 传递函数的零点不直接形成自由运动的模态 ...

  3. jQuery控制元素显示、隐藏、切换、滑动的方法

    jQuery 隐藏和显示 通过 hide() 和 show() 两个函数,jQuery 支持对 HTML 元素的隐藏和显示: 实例 $("#hide").click(functio ...

  4. 珍藏的数据库SQL基础练习题答案

    自己珍藏的数据库SQL基础练习题答案 一,基本表的定义与删除. 题1: 用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1 ...

  5. [转][CEF]自动播放视频

    1.CEF 默认不支持 mp4,可以在网上下载热心网友提供的修改版. 查看支持的特性的方法:在 CEF 中访问网页 :http://html5test.com/ 2. 打开网页后视频自动播放: mut ...

  6. 解决Kubernetes 1.7.3 kube-apiserver频繁异常重启的问题(转)

    原文的帖子无法访问,我只能粘贴内容 近期将之前的一个用Kubernetes 1.3.7的环境更换为最新发布的用kubeadm安装的Kubernetes 1.6.4 Dashboard无法访问的问题&g ...

  7. java中友元的完美实现(转载)

    http://blog.sina.com.cn/s/blog_ce5b9f7e0102vhiv.html C++中有一个友元机制,可以给予一个类访问另一个类中私有成员的权限.   这个机制有时候是很有 ...

  8. Oracle EXP-00091解决方法

    非交互式 windows: D:\>exp scott/tiger file=employee.dmp tables=(emp,dept) linux需要加双引号 EXP-00091: [ora ...

  9. android 根据滑动隐藏或显示导航 类似手机QQ好友个人信息

    //重写ScrollView public class NotifyingScrollView extends ScrollView { /** * @author Cyril Mottier */ ...

  10. JAVA Map 和 List 排序方法

    private Map<String,String> mapDate; //正序 mapDate=new TreeMap<String, String>(new Compara ...