2

jquery を使用してデータ属性のコンテンツを取得しようとしていますが、返されたデータは設定したものではありません。

この簡単な例では:

<div id="test" data-test="[1]"></div>

しかし、代わりに$('#test').data('test')戻ります1[1]

純粋な JavaScript を使用しても問題ありません。

オンラインで表示: https://jsfiddle.net/jojhm2nd/

4

2 に答える 2

4

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 値として解析できない場合は、文字列として残されます。

于 2015-11-13T12:41:34.433 に答える
2

このメソッドを使用すると、jQuery は魔法のように動作します.data

jQuery Web サイトから:

文字列を JavaScript 値 (ブール値、数値、オブジェクト、配列、および null を含む) に変換するためのあらゆる試行が行われます。

.attrメソッドを使用して、次のことを行うことができます。

$('#test').attr('data-test');
于 2015-11-13T12:41:43.873 に答える