<html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ alert(1); }).dblclick(function(){ $("p").slideToggle(); }); }); </script> </head> <body> <p>这是一个段落。</p> <button>请双击此处</button> </body> </html>
上面的代码中双击操作不会触发动作。每次都出发click操作。
下面转载一下其他人怎么解决的方法:
在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.veryhuo.com/a/view/26382.html
相关推荐
在C# WinForm开发中,用户界面交互是一个关键部分,其中单击(Click)和双击(DoubleClick)事件是常见的用户输入响应。然而,标题提到的一个常见问题是:在同一个控件上,C# WinForm不支持同时处理单击和双击事件。...
通过对`Button`控件的`Click`事件进行重载,并通过记录两次点击之间的时间间隔来判断是否为双击,我们成功地实现了`Button`控件的双击事件。这种方法不仅简单实用,而且具有很好的灵活性。在实际开发过程中,可以...
与`DoubleClick`不同的是,`MouseDoubleClick`事件会提供一个`MouseEventArgs`对象,这个对象包含了有关鼠标操作的详细信息,如鼠标的位置(X和Y坐标)、点击的按钮(左键、右键或中键)等。因此,如果你需要在处理...
如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,第一次点击(click)会 触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,还是会...
- 这个项目的源代码可能包含了如何在实际应用中设置和处理`Click`和`DoubleClick`事件的例子。通过查看和分析代码,可以更深入地理解这些事件的工作方式和用法。 总的来说,理解和掌握C# Winform中的单击和双击...
控件事件如`Click`(单击)、`DoubleClick`(双击)、`MouseDown`(鼠标按下)、`MouseUp`(鼠标释放)、`KeyDown`(键盘按键按下)和`KeyUp`(键盘按键释放),可以响应用户的输入操作。 3. **定时器(Timer)事件...
在Flex开发中,数据网格(DataGrid)是一个...同时,压缩包中的文件可能提供了客户端和服务器端的实现细节,供开发者参考和整合。在实际开发中,理解并灵活运用这些知识点,可以提高Flex应用的用户体验和功能完整性。
gridview中的DoubleClick事件可能无法正常响应,这里列举了三种方法触发双击列表行事件
### jQuery 常用技术点详解 #### 一、jQuery 选择器 jQuery 提供了一系列强大的选择器,这些选择器可以极大地简化 DOM ...通过学习和掌握这些选择器和事件方法,开发者可以更高效地进行页面的交互设计与开发工作。
Click 事件 在单击控件时发生此事件。 ClientSizeChanged 事件 当 ClientSize 属性的值更改时发生此事件。 Closed 事件 关闭窗体时发生此事件。 Closing 事件 关闭窗体时发生此事件。 ContextMenuChanged 事件 ...
在jQuery中,我们可以使用`$.fn.doubleclick()`方法来绑定双击事件。当用户双击图片时,这个事件会被触发,进而执行预设的放大功能。 DOM操作则是指对HTML元素进行添加、删除或修改。在图片放大效果中,可能需要...
在Excel-VBA编程中,用户窗体(UserForm)是一个非常重要的工具,它允许开发者创建交互式的...实践这些范例将帮助你更好地理解和掌握Excel-VBA的用户窗体对象事件,从而在日常办公自动化任务中实现更高效的工作流程。
#### 三、jQuery事件方法 jQuery提供了多种事件方法来帮助开发者处理各种事件,包括但不限于鼠标、键盘、焦点等相关事件。这些方法可以用于触发事件或者将回调函数绑定到指定的事件上。 1. **`bind()`**:向匹配...
4. **Visual Basic集成开发环境(IDE)**:VB的IDE是一个完整的开发平台,它包括标题栏、菜单栏、工具栏、窗体设计器、控件箱、弹出式菜单、工程管理器窗口、属性窗口和对象浏览器等多个组件。这些组件协同工作,方便...
在事件处理方法内部,可以使用`sender`参数获取触发事件的对象,`EventArgs`参数则包含与事件相关的额外信息。 此外,源码中可能还包括了自定义事件的实现,即定义自己的事件类型,并通过`raise`关键字或`...
6. Click和DoubleClick事件:用户单击(Click)或双击(DoubleClick)窗体时,这些事件会被触发。可以用于执行相应的操作。 7. MouseDown、MouseUp和MouseMove事件:涉及鼠标的事件,MouseDown是鼠标按键被按下,...
VB 中的事件包括 Load 事件、Click 事件、DoubleClick 事件、MouseDown 事件、MouseMove 事件、MouseUp 事件等。 五、方法 方法是面向对象的程序设计语言,为程序设计人员提供了一种特殊的过程和函数。方法是面向...
Label 控件的常用事件包括 Click、DoubleClick、MouseDown 等。 ### 3. TextBox 控件 TextBox 控件用于输入和显示文本信息,常用于收集用户输入、显示数据等。TextBox 控件的常用属性包括 Text、MaxLength、...
鼠标事件包括Click、DoubleClick、MouseClick、MouseDown、MouseEnter、MouseHover、MouseLeave、MouseMove、MouseUp。 9. **jQuery的功能**:jQuery能获取和操作DOM元素,改变样式和内容,响应用户交互,创建动画...