jquery を使用してデータ属性のコンテンツを取得しようとしていますが、返されたデータは設定したものではありません。
この簡単な例では:
<div id="test" data-test="[1]"></div>
しかし、代わりに$('#test').data('test')
戻ります1
[1]
純粋な JavaScript を使用しても問題ありません。
オンラインで表示: https://jsfiddle.net/jojhm2nd/
jquery を使用してデータ属性のコンテンツを取得しようとしていますが、返されたデータは設定したものではありません。
この簡単な例では:
<div id="test" data-test="[1]"></div>
しかし、代わりに$('#test').data('test')
戻ります1
[1]
純粋な JavaScript を使用しても問題ありません。
オンラインで表示: https://jsfiddle.net/jojhm2nd/
jQuery のdata
は属性アクセサー関数ではありません。(これはよくある間違いで、簡単に犯してしまいます。) 属性にアクセスするには、 を使用しますattr
。
$("#test").attr("data-test");
data
属性を読み取りdata-*
ますが、その要素の jQuery のデータ キャッシュを初期化するためだけです。(そして、属性を書き込むdata-testing-one-two-three
ことはありません。) 名前の変更 (testingOneTwoThree
たとえば、 become ) や値の解釈など、一連の処理をすべて行います。この場合、値は で始まるため、配列として解釈されます[
。その配列を で表示するとalert
、文字列に強制され、配列を文字列に強制すると、Array#join
. たとえば、属性が だった場合、結果として表示され[1, 2]
ます1,2
。
上記のリンクのドキュメントから:
文字列を JavaScript 値 (ブール値、数値、オブジェクト、配列、および null を含む) に変換するためのあらゆる試行が行われます。値の表現が変わらない場合にのみ、値は数値に変換されます。たとえば、「1E02」と「100.000」は数値 (数値 100) としては同等ですが、変換すると表現が変わるため、文字列として残されます。文字列値「100」は数値 100 に変換されます。
データ属性がオブジェクト (「{」で始まる) または配列 (「[」で始まる) の場合、jQuery.parseJSON を使用して文字列が解析されます。引用符で囲まれたプロパティ名を含む有効な JSON 構文に従う必要があります。値が JavaScript 値として解析できない場合は、文字列として残されます。
このメソッドを使用すると、jQuery は魔法のように動作します.data
。
jQuery Web サイトから:
文字列を JavaScript 値 (ブール値、数値、オブジェクト、配列、および null を含む) に変換するためのあらゆる試行が行われます。
.attr
メソッドを使用して、次のことを行うことができます。
$('#test').attr('data-test');