0

我有一些这样的结果:

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 是“原生”dom 的容器/包装器。有人可以解释细节或推荐参考吗?

4

2 回答 2

1

只有一个 DOM。

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

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

像这样看它:new ProxyObject(a) == new ProxyObject(a)会返回 false 因为new ProxyObject构建了一个对象。jQuery 更漂亮的语法也存在同样的问题。

于 2012-07-06T09:25:22.500 回答
0

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

$(root) == $(root)也回来false

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

于 2012-07-06T09:25:09.757 回答