1

另一个愚蠢的问题,我无法通过所有其他线程完全弄清楚,所以希望这里有人可以。

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

基本上我明白了

when click inside document
spawn div

when click div
do nothing

when doubleclick div
do this

目前,当我双击它时,它会运行代码,但它也会在我单击元素的地方生成另一个 div。

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

谢谢

4

2 回答 2

2

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

于 2011-10-26T17:30:00.530 回答
1

基思是对的,他的解决方案之所以有效,是因为 live() 和 bind() 的工作方式不同。

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

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

于 2011-10-26T18:27:42.827 回答