加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

jQuery中dbclick变乱触发两次click变乱的办理要领

发布时间:2018-09-01 15:34:59 所属栏目:业界 来源:站长网
导读:在 jQuery 变乱绑定中,dbclick可以触发两次click变乱。譬喻一个DOM元素div,既绑定了 click 变乱,又绑定了 dblclick 变乱,这两个变乱别离要做独立的工作。变乱处理赏罚上没有斗嘴,都可以各自完成各自的操纵。双击的时辰固然是执行了 dblclick 变乱,可是在

jQuery变乱绑定中,dbclick可以触发两次click变乱。譬喻一个DOM元素div,既绑定了 click 变乱,又绑定了 dblclick 变乱,这两个变乱别离要做独立的工作。变乱处理赏罚上没有斗嘴,都可以各自完成各自的操纵。双击的时辰固然是执行了 dblclick 变乱,可是在这之前,也执行了click 变乱,那么,怎样来榨取可能说屏障这次多余的 click 变乱呢?本文将提供应您一个较量好的办理步伐。

发生道理说明
  起首,来相识一下点击变乱产生的先后次序:

单击:mousedown, mouseup, click
双击:mousedown, mouseup, click, mousedown, mouseup, click, dblclick
  由此看来,dblclick 变乱产生之前,现实上产生了两次 click 变乱。个中,第一次的 click 是会被屏障掉,可是第二次则不会,以是就呈此刻双击的时辰,也触发 click 变乱。

办理步伐
  知道了缘故起因,接下来天然就是想步伐把这次 click 给屏障掉,可是因为各赏识器均未提供直接去遏制变乱的要领,以是值得改变思绪。
  因为我们只必要屏障一次 click 变乱即可,由此遐想到,可以操作 setTimeout() 要领来延时完成 click 变乱的处理赏罚,在必要遏制 click 的时辰操作 clearTimeout() 要领遏制这一变乱的处理赏罚。这样,就可以较量轻易的写出如下的 javascript 代码:

var timer = null; function do_click(event) {
clearTimeout(timer); // 这里加一句是为了兼容 Gecko 的赏识器 /
if (event.detail == 2)
return ;
// 同上句的浸染
timer = setTimeout(function() {
// click 变乱的处理赏罚
}, 300); }
function do_dblclick(event) {
clearTimeout(timer);
// dblclick 变乱的处理赏罚
}
题目总结
  从测试功效来看,假如前后两次点击的时刻在 300ms 阁下的时辰,照旧很轻易呈现 click 和 dblclick 变乱被“同时”挪用的环境,而假如隔断的时刻更短或更长,则只会有 click 或 dblclick 变乱。
  以是,应该嗣魅这个要领已经在很洪流平上,停止了 click 和 dblclick 变乱的“同时”存在题目。虽然,它还没有到达完全办理的水平。
留意
windows 的节制面板里是可以调鼠标的双击速率的(Linux 等体系下能不能调,俺就不清晰了),这点对付措施照旧有必然影响,各人可以本身调理下试试看~
颠末测试,延时 300ms 是一个较量抱负的变乱,既思量到对鼠标操纵并不异常顺遂的伴侣,也分身 click 变乱的相应速率
以上代码,只在 IE6、FF3、Chrome 中测试过,并未呈现题目

w3c尺度是没有dblclick的,而是通过event.detail来判定是单击或双击

原文:http://www.js8.in/610.html

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读