データ部分のコードは 1381 行目から始まります。コードの最初の重要な行:
// データが未定義で、現在の呼び出しがデータをクエリすることであるが、オブジェクトにデータがないことを示します。を返し、直接
if((!id || (pvt && id && !cache[id][internalKey])) && getByName && data === unknown) {
return; >if(!id) {
if(isNode) {
// uuid シードを使用して一意の ID を段階的に割り当てます。これは DOM 要素にのみ必要です。グローバル キャッシュに保存する必要があるため、
elem[jQuery.expando] = id = jQuery.uuid;
} else {
id = jQuery.expando;
}
// 元の値をクリアします
if(!cache[id]) {
cache[id] = {};
if(!isNode) {
cache[id].toJSON = jQuery.noop;
}
}
// extend を使用してキャッシュを拡張し、データを保存するための属性を追加します
if(typeof name === "object" || typeof name === " function") {
if(pvt) {
cache[id][internalKey] = jQuery.expand(cache[id][internalKey], name);
} else {
cache[id] ] = jQuery .extend(cache[id], name);
}
}
thisCache = cahce[id]
// キーの競合を回避します
if(pvt) {
if( !thisCache[internalKey]) {
thisCache[internalKey] = {};
}
thisCache = thisCache[internalKey];
if(データ !== 未定義) {
thisCache[jQuery.camelCase(name)] = データ;
}
return getByName ? thisCache[jQuery.camelCase(name)] : thisCache;
removeData: function( elem , name, pvt ) { // フロント部分は data に似ています // ... // 一部のブラウザーは Element の削除操作をサポートしていません。jQuery.support でこのブラウザー機能を確認してください。 // 削除が失敗した場合は、まず null に設定します。 if ( jQuery.support.deleteExpando || キャッシュ != window ) { キャッシュを削除 [ id ]; } else { キャッシュ [ id ] = null; }
;CODE>var innerCache =cache[ id ][internalKey ];
// データがまだある場合は、それをクリアして再度設定し、パフォーマンスを向上させます。
if ( innerCache ) {
cache[ id ] = {} ;
cache[ id ][ InternalKey ] = externalCache;
// データがなくなったらすべて削除します
} else if ( isNode ) {
// 削除がサポートされている場合、削除します。
// IEではremoveAttributeを使っているので一度試してみてください。再度失敗した場合は、null に設定することしかできません。
if ( jQuery.support.deleteExpando ) {
delete elem[ jQuery.expando ];
} else if ( elem.removeAttribute ) {
elem.removeAttribute( jQuery.expando );
}
}
}