2012-07-06 35 views
0

我有一些结果是这样的:jquery的dom和“native”dom有什么区别?

1. //node, root are "native" dom object from getElementById and alike 
2. $(node)[0] == node //true 
3. $(root)[0] == root //true 
4. node.parentNode.parentNode == root //true 
5. $(node).parent().parent()[0] == $(root)[0] //true 
6. $(node).parent().parent() == $(root) //false 

我想写像6号线,这是不行的一些代码。所以我不得不使用第5行。为什么不行6行?

据我所知,jQuery dom是“native”dom的容器/包装器。任何人都可以解释细节或推荐参考?

回答

1

只有一个DOM。

但是当你建立$(domObject)你正在制作一个新的jquery对象封装一个dom对象。

即使domObject相同,此对象也没有理由与另一个$(domObject)相等。

看起来像这样:new ProxyObject(a) == new ProxyObject(a)将返回false,因为new ProxyObject会建立一个对象。这与jQuery的漂亮语法是一样的问题。

0

为什么第6行返回false是因为它们是两个不同的对象。

$(root) == $(root) return false

对于相同的dom元素root,每次你做$(root)都会产生一个新的jQuery对象。