2010-06-30 90 views
1

我有两个重叠div元素在我的网络应用程序。防止浏览器产生双击事件

关于底层div事件已注册双击

的div位于其他分区一个事件上面的点击隐藏在div注册

的问题是,如果我上述DIV元素上双击它首次点击后,隐藏的,但第二次点击导致双击事件底层div来开枪 - 我该如何预防呢?

+0

Waitaminute ...我们试图防止默认操作,而不是防止事件冒泡(下面是Pointy的回答)。 “上面”div是“下面”div的孩子吗?或者他们在DOM树的不同部分? – 2010-06-30 15:27:28

回答

2

混合“点击”和“双击”最多只会产生问题。但是,在这种情况下,如果您确保“click”事件的处理程序(隐藏该元素的事件)返回false到浏览器,可能会变得更好。

如何做到这一点取决于您的处理程序是如何注册的。如果是这样的:

<div onclick='hideMe();'> 

,那么你会如果你使用一些框架或附加的处理程序,那么就具有处理函数返回false的一些其他方式改变,要

<div onclick='hideMe(); return false'> 

应该这样做。

+0

如果返回false并不这样做,那么这样的事情应该帮助(在处理程序的身体): 如果(E && e.preventDefault) \t \t { \t \t \t e.preventDefault(); \t \t} \t \t否则如果(window.event && window.event.returnValue) \t \t { \t \t \t window.eventReturnValue = FALSE; \t \t} – 2010-06-30 12:23:00

+0

是的,@瑞恩,这是真的,但我从来没有一个简单的返回false的问题。现在的确,您可以通过诸如“preventDefault()”等方式获得更多的控制权,并且有时这非常重要。 – Pointy 2010-06-30 12:48:36

+0

我尝试了两种解决方案(我已经在监听器中返回false),但它没有解决问题。 问题不在于一个事件发布到很远。有两个事件:onclick和ondblclick ...我想防止ondblclick被解雇 – 2010-06-30 13:14:51