12

jQuery.data() を使用して、jQuery DOM オブジェクト参照を保存しています。

myObj.data('key', $('#element_id'));

私はこれを頻繁に (しばしば同じ DOM オブジェクトに対して) 使用するので、あまり多くのメモリを消費したくありません。jQuery は参照を保存しますか、それとも DOM オブジェクトのディープ コピーを保存しますか? その場合、要素参照の代わりに要素 ID を保存する方がよいと思います。

4

2 に答える 2

12

ビルドに使用する jQuery オブジェクトには次が$('#element_id')含まれます

  • コンテキストへの参照 (ドキュメントはこちら)
  • セレクター
  • cached : 長さ (あなたの場合は 0 または 1) と見つかった dom ノードの参照
  • プロトタイプへのポインタ (メソッドを呼び出せるようにするため)

データ (ノード内) に保存するのは、jQuery オブジェクトです。このオブジェクトには、参照されている DOM ノードのディープ コピーは含まれていないため、ディープ コピーは保存されず、主に文字列といくつかのポインターを含む小さなオブジェクトのみが保存されます。

また、DOM ノード参照がキャッシュされるため、id を取得するよりも効率的です (id によるノードの検索は常に高速であるため、わずかですが、より複雑なセレクターを使用している場合は、違いが生じるでしょう)。

私の意見では、あなたがしていることは問題なく効率的です。

于 2012-12-08T10:40:49.750 に答える
7

あなたはいつでもソースを直接見ることができます、オープンソースの場合はそうです:)

data.jsの51行目と52行目には、役立つコメントがあります。

//キーと値のペアの代わりに、オブジェクトをjQuery.dataに渡すことができます。これは

//既存のキャッシュに浅くコピー

浅いコピーだと思います!

更新07/14-そのリンクはhead:masterへのリンクだったので、今は完全に古くなっています。これが私が話していたものへの正規リンクです:16ba6ffのように

于 2012-12-08T10:45:21.540 に答える