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 は 1 つだけです。

しかし、ビルドする$(domObject)と、dom オブジェクトをカプセル化する新しい jquery オブジェクトが作成されます。

$(domObject)domObject が同じであっても、このオブジェクトが別のオブジェクトと等しい理由はありません。

このように見てください:オブジェクトを構築するnew ProxyObject(a) == new ProxyObject(a)ため、false を返します。new ProxyObjectこれは、よりきれいな jQuery 構文と同じ問題です。

于 2012-07-06T09:25:22.500 に答える
0

6 行目が false を返す理由は、これらが 2 つの異なるオブジェクトであるためです。

$(root) == $(root)戻りfalseます。

同じ dom element に対してroot、毎回$(root)新しい jQuery オブジェクトを生成します。

于 2012-07-06T09:25:09.757 に答える