7

data()jqueryがデータを保存する場所と、データがいつどのように消去されるか教えてもらえますか?

これを使用して ajax 呼び出し結果を保存すると、パフォーマンスの問題はありますか?

例えば:

$("body").data("test", { myData: 'abcd'});
4

2 に答える 2

28

すべてのデータは、jQueryという名前のオブジェクトのプロパティ内に保存されますcache。のコンテンツを$.cacheコンソールに記録して、DOM 要素に関連付けられたすべてのデータとイベントを確認します。

jQuery が DOM オブジェクトをこのキャッシュ内のオブジェクトとリンクする方法は、DOM オブジェクトを操作することです。入力要素があるとします

<input type="text" value="hello" />

「foo」という名前のデータキーを持つ

$(e).data("foo", "bar");

現在、jQuery は、からもアクセスできるjQuery<current time in ms>などの形式のランダムな文字列を保持しています。jQuery は、関連付けられたデータ項目またはイベントを持つ各 DOM オブジェクトに、この expando 文字列をキーとして追加します。したがって、上記の入力要素の DOM オブジェクトには、次のような整数値を持つこの expando キーが含まれます。jQuery1291790929680$.expando

jQuery1291790929680: 4

4 は単なるランダムな例ですが、この番号は、$.cacheこの DOM オブジェクトに関連付けられたデータとイベントが格納されるオブジェクト内のインデックスを示します。したがって、この情報が与えられると、上記の入力要素のデータを取得するために、間接的に次のように書くことができます。

$.cache[4]["foo"]

これは、間接的な書き方である「バー」を返す必要があります$(e).data("foo")

上記のナンセンスの図解例:)

于 2010-12-08T07:12:23.277 に答える
3

jquery の内容を見る

jQuery.data() メソッドを使用すると、あらゆるタイプのデータを循環参照から安全な方法で DOM 要素にアタッチできるため、メモリ リークが発生しません。jQuery は、DOM 要素が jQuery メソッドによって削除されたとき、およびユーザーがページを離れたときに、データが削除されることを保証します。1 つの要素にいくつかの異なる値を設定し、後でそれらを取得できます。

于 2010-12-08T06:37:20.463 に答える