この記事では、jQuery データ キャッシュの使用状況を分析します。皆さんの参考に共有してください。詳細は以下の通りです。
jQuery の API ヘルプ ドキュメントでは、jQuery はデータ キャッシュの役割を次のように説明しています: 循環参照のリスクなしに要素上のデータにアクセスするために使用されます。
1. キャッシュデータを定義します
$(selector).data(name,value) メソッドを使用して、jQuery オブジェクトのキャッシュ データを定義します。これらのキャッシュされたデータは、一致する DOM 要素セット内のすべての DOM 要素に保存されます。
var $link = $('a'); $link.data('linkType', 'home');
注: $(selector).data(name,value) は、文字列だけでなく、一致する DOM 要素に任意の形式でデータを格納できます。
2. キャッシュデータを取得します
この時点で必要なパラメータは、キャッシュされたデータの名前を指定する 1 つのみです。
var linkType = $link.data('linkType'); //'home'
注: 読み取られたキャッシュ データが存在しない場合、戻り値は未定義です。jQuery コレクションが複数の要素を指している場合、最初の要素の対応するキャッシュ データのみが返されます。
3. キャッシュされたデータを削除します
removeData() 関数は、指定された名前のキャッシュ データを削除し、対応する jQuery オブジェクトを返すことができます。
//删除缓存数据的同时,返回对应的jQuery对象。 var $a = $link.removeData('linkType');
4. jQuery データキャッシュを使用するための仕様
data() 関数の呼び出し回数が増えると、または不適切な使用により、キャッシュ オブジェクトが急速に拡大し、最終的にはプログラムのパフォーマンスに影響します。
したがって、jQuery データ キャッシュ機能を使用する場合は、キャッシュ オブジェクトを適時にクリアする必要があります。 jQuery は、キャッシュされたデータを手動でクリアするための RemoveData() 関数を提供します。 jQuery フレームワークの動作メカニズムにより、以下の状況ではデータ キャッシュを手動でクリアする必要はありません。
* elem に対して Remove() 操作を実行すると、jQuery はオブジェクト上に存在する可能性のあるキャッシュを自動的にクリアします。
* elem に対して empty() 操作を実行します。現在の elem サブ要素のデータ キャッシュがある場合、jQuery はサブオブジェクトの可能なデータ キャッシュも認識します。
* jQuery の clone() メソッドでノードをコピーしても、データ キャッシュはコピーされません。
この記事が皆さんの jQuery プログラミングに役立つことを願っています。