我有这样的结果:
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的容器/包装器。有人可以解释细节或推荐参考吗?
答案 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对象。