jquery的dom和“native”dom之间有什么区别?

时间:2012-07-06 09:21:54

标签: jquery 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的容器/包装器。有人可以解释细节或推荐参考吗?

2 个答案:

答案 0 :(得分:1)

只有一个DOM。

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

即使domObject是相同的,这个对象也没有理由等于另一个$(domObject)

这样看:new ProxyObject(a) == new ProxyObject(a)将返回false,因为new ProxyObject构建了一个对象。这与jQuery更漂亮的语法有同样的问题。

答案 1 :(得分:0)

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

$(root) == $(root)也会返回false

对于相同的dom元素root,每次执行$(root)时都会生成一个新的jQuery对象。