;/div>$("div").data("role") === "ページ"; $("lastValue") === 43; >$("div").data("hidden") === true; $("div").data("options").name === "ジョン";
つまり、.data() を使用して値を取得する場合、jQuery はまず取得した文字列値を、ブール値、null、数値、オブジェクト、配列を含む JS 型に変換しようとします。値が「true|false」の場合は、対応するブール値を返します。
値が「null」の場合は、null を返します。
値が純粋な数値で構成される文字列 ( data ”” === data) の場合、対応する数値 (データ) が返されます。
値が (?:{[sS]*}|[[sS]*])$ で構成される場合 ("{key:value }" または [1)、 2,3] の場合は、jQuery.parseJSON を使用して解析してみます。
それ以外の場合は、文字列値
を返します。もちろん、これはドキュメントにも具体的に記載されています。文字列値を取得し、自動的に変換された値を取得したくない場合は、.attr("data-" key) を使用して対応する値を取得できます:
コードをコピー
コードは次のとおりです。
コードをコピーします
コードは次のとおりです:
function dataAttr(elem, key, data) { try { /*.data(key) メソッドは、取得した値を次のように変換しようとします。 JS タイプ (boolean、null、number、object、array を含む)*/
data = data === "true" ? true :
data === "false" false :
data === "null" ? null :
// 文字列を変更しない場合のみ数値に変換します
data "" === data data :
/*rbrace = /(?:{[ sS]*}|[[sS]*] )$/,*/
rbrace.test( data ) jQuery.parseJSON( data ) :
data
} catch( e ) {}
// 後で変更されないようにデータを設定します。
jQuery.data( elem, key, data )
} else {
data = unknown; >}
データを返します。
}