jQuery传播问题

时间:2011-10-26 17:18:56

标签: jquery click propagation right-click

另一个愚蠢的问题,我不能通过所有其他线程弄清楚,所以希望有人在这里。

演示位于http://jsfiddle.net/OwenMelbz/PaAt2/

基本上我已经得到了它

when click inside document
spawn div

when click div
do nothing

when doubleclick div
do this

此刻,当我双击它时,它会运行代码,但它也会生成另一个div,我点击该元素。

我的代码在jsfiddle,正如我在上面发布的那样!

感谢

2 个答案:

答案 0 :(得分:2)

不知道为什么但这对我有用。 http://jsfiddle.net/PaAt2/4/。它可能与live处理事件与绑定的方式有关。

答案 1 :(得分:1)

Keith说他的解决方案是正确的,因为live()和bind()的工作方式不同。

bind()将事件处理程序附加到调用它的jQuery对象中的所有DOM元素。 live()将一个事件处理程序从jQuery附加到'Event Context'(查找http://api.jquery.com/live以获取更多信息)。默认情况下,这是DOM树的根。此事件处理程序位于捕获事件中,这些事件在绑定的对象内冒泡(或传播)DOM对象。当它捕获一个时,它会查看源自该事件的内容,如果它与应用了live()的jQuery对象的选择器匹配,它将运行您提供的函数参数作为事件处理程序。

这意味着如果你有一个容器(在这个例子中是'#project-wrap')并绑定到它的click事件,你通常会得到来自该容器内任何东西的点击,因为它们会冒泡到容器。但是如果使用live()将事件绑定到容器,则只会获得源自该容器本身的点击,即从容器内的空白区域点击,而不是点击其中包含的任何内容。