`
nicegege
  • 浏览: 590864 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jquery对象同时具有click和doubleClick事件

 
阅读更多
<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

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

分享到:
评论

相关推荐

    C# winform 单击与双击事件同时存在例子

    在C# WinForm开发中,用户界面交互是一个关键部分,其中单击(Click)和双击(DoubleClick)事件是常见的用户输入响应。然而,标题提到的一个常见问题是:在同一个控件上,C# WinForm不支持同时处理单击和双击事件。...

    探寻C# Button双击事件

    通过对`Button`控件的`Click`事件进行重载,并通过记录两次点击之间的时间间隔来判断是否为双击,我们成功地实现了`Button`控件的双击事件。这种方法不仅简单实用,而且具有很好的灵活性。在实际开发过程中,可以...

    C# DoubleClick与MouseDoubleClick区别,双击事件引发顺序

    与`DoubleClick`不同的是,`MouseDoubleClick`事件会提供一个`MouseEventArgs`对象,这个对象包含了有关鼠标操作的详细信息,如鼠标的位置(X和Y坐标)、点击的按钮(左键、右键或中键)等。因此,如果你需要在处理...

    js鼠标单击和双击事件冲突问题的快速解决方法

    如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,第一次点击(click)会 触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,还是会...

    C# Winform 区别单双击操作

    - 这个项目的源代码可能包含了如何在实际应用中设置和处理`Click`和`DoubleClick`事件的例子。通过查看和分析代码,可以更深入地理解这些事件的工作方式和用法。 总的来说,理解和掌握C# Winform中的单击和双击...

    VB 对象的系统事件

    控件事件如`Click`(单击)、`DoubleClick`(双击)、`MouseDown`(鼠标按下)、`MouseUp`(鼠标释放)、`KeyDown`(键盘按键按下)和`KeyUp`(键盘按键释放),可以响应用户的输入操作。 3. **定时器(Timer)事件...

    flex datagrid doubleclick 实例

    在Flex开发中,数据网格(DataGrid)是一个...同时,压缩包中的文件可能提供了客户端和服务器端的实现细节,供开发者参考和整合。在实际开发中,理解并灵活运用这些知识点,可以提高Flex应用的用户体验和功能完整性。

    三种方法触发GridControl双击行事件

    gridview中的DoubleClick事件可能无法正常响应,这里列举了三种方法触发双击列表行事件

    jQuery常用技术点

    ### jQuery 常用技术点详解 #### 一、jQuery 选择器 jQuery 提供了一系列强大的选择器,这些选择器可以极大地简化 DOM ...通过学习和掌握这些选择器和事件方法,开发者可以更高效地进行页面的交互设计与开发工作。

    vb.net事件大全.docx

    Click 事件 在单击控件时发生此事件。 ClientSizeChanged 事件 当 ClientSize 属性的值更改时发生此事件。 Closed 事件 关闭窗体时发生此事件。 Closing 事件 关闭窗体时发生此事件。 ContextMenuChanged 事件 ...

    jQuery移动端双击图片放大特效.zip

    在jQuery中,我们可以使用`$.fn.doubleclick()`方法来绑定双击事件。当用户双击图片时,这个事件会被触发,进而执行预设的放大功能。 DOM操作则是指对HTML元素进行添加、删除或修改。在图片放大效果中,可能需要...

    Excel-VBA实用技巧范例-用户窗体对象事件.zip

    在Excel-VBA编程中,用户窗体(UserForm)是一个非常重要的工具,它允许开发者创建交互式的...实践这些范例将帮助你更好地理解和掌握Excel-VBA的用户窗体对象事件,从而在日常办公自动化任务中实现更高效的工作流程。

    jQuery参考手册

    #### 三、jQuery事件方法 jQuery提供了多种事件方法来帮助开发者处理各种事件,包括但不限于鼠标、键盘、焦点等相关事件。这些方法可以用于触发事件或者将回调函数绑定到指定的事件上。 1. **`bind()`**:向匹配...

    全国计算机二级VB笔记.pdf

    4. **Visual Basic集成开发环境(IDE)**:VB的IDE是一个完整的开发平台,它包括标题栏、菜单栏、工具栏、窗体设计器、控件箱、弹出式菜单、工程管理器窗口、属性窗口和对象浏览器等多个组件。这些组件协同工作,方便...

    winform 多事件类型源码

    在事件处理方法内部,可以使用`sender`参数获取触发事件的对象,`EventArgs`参数则包含与事件相关的额外信息。 此外,源码中可能还包括了自定义事件的实现,即定义自己的事件类型,并通过`raise`关键字或`...

    VB编程中窗体事件该的讲解.rar

    6. Click和DoubleClick事件:用户单击(Click)或双击(DoubleClick)窗体时,这些事件会被触发。可以用于执行相应的操作。 7. MouseDown、MouseUp和MouseMove事件:涉及鼠标的事件,MouseDown是鼠标按键被按下,...

    vb程序设计教程课后答案与实验题答案-(第三版).doc

    VB 中的事件包括 Load 事件、Click 事件、DoubleClick 事件、MouseDown 事件、MouseMove 事件、MouseUp 事件等。 五、方法 方法是面向对象的程序设计语言,为程序设计人员提供了一种特殊的过程和函数。方法是面向...

    .net控件属性事件大全详解

    Label 控件的常用事件包括 Click、DoubleClick、MouseDown 等。 ### 3. TextBox 控件 TextBox 控件用于输入和显示文本信息,常用于收集用户输入、显示数据等。TextBox 控件的常用属性包括 Text、MaxLength、...

    前端JS资料.docx

    鼠标事件包括Click、DoubleClick、MouseClick、MouseDown、MouseEnter、MouseHover、MouseLeave、MouseMove、MouseUp。 9. **jQuery的功能**:jQuery能获取和操作DOM元素,改变样式和内容,响应用户交互,创建动画...

Global site tag (gtag.js) - Google Analytics