私はすべてこれに似ている一連のオブジェクトを持っています:
<a data-type="file" data-path="/some/path" data-size="849858">Link</a>
各データ属性を動的にプルする関数を作成したいので、「data-icon」などの属性を追加しても、関数は次のようなすべてのデータ属性の配列を返します。
{
"type" : "file",
"path" : "/some/path",
...
}
私はすべてこれに似ている一連のオブジェクトを持っています:
<a data-type="file" data-path="/some/path" data-size="849858">Link</a>
各データ属性を動的にプルする関数を作成したいので、「data-icon」などの属性を追加しても、関数は次のようなすべてのデータ属性の配列を返します。
{
"type" : "file",
"path" : "/some/path",
...
}
編集最初に提案された答えは、質問にある出力文字列から推測した JSON 文字列/オブジェクトが必要な場合でした。キーと値のペアを取得したいだけの場合は、データ属性のコレクションを繰り返すだけです。
$.each($('a').data(), function(i, v) {
alert('"' + i + '":"' + v + '",');
});
JSON文字列/オブジェクトが必要であるという前提で最初に提案された答え
データ属性のコレクションを使用してデータ属性のコレクションを反復処理することにより、データ属性のキーと値のペア オブジェクト (json オブジェクト) を作成data()
できます。json 文字列を作成したら、$.parseJSON を使用して jSON オブジェクトを作成し、ループを使用してキーと値のペアを取得できます。
strJson = "{"
$.each($('a').data(), function(i, v) {
strJson += '"' + i + '":"' + v + '",';
});
strJson = strJson.substring(0, strJson.length - 1);
strJson += '}';
var jsonObject = $.parseJSON( strJson );
for (var key in jsonObject)
alert(key + " : " + jsonObject[key]);