web-dev-qa-db-ja.com

配列をjQuery .data()属性に渡す方法

わかりましたので、非常に基本的な配列をjqueryデータattrubuteサーバー側に渡したいです。

<div data-stuff="['a','b','c']"></div>

そして、次のように取得します:

var stuff = $('div').data('stuff');

alert(stuff[0]);

これが「a」ではなく「[」を警告するように見えるのはなぜですか(JSfiddleリンクを参照)

JSFiddle Link:http://jsfiddle.net/ktw4v/3/

79
wilsonpage

変数を文字列として扱い、その0番目の要素は[

これは、文字列が 有効なJSON ではなく、単一引用符ではなく二重引用符を文字列区切り文字として使用する必要があるために発生しています。次に、属性値全体を区切るために単一引用符を使用する必要があります。

引用符を修正すると、元のコードが機能します( http://jsfiddle.net/ktw4v/12/ を参照)

<div data-stuff='["a","b","c"]'> </div>

var stuff = $('div').data('stuff');

JQueryがデータ属性で有効なJSONを検出すると、 自動的に解凍 になります。

135
Alnitak

属性として宣言すると、文字列であることを意味します。

したがって、_stuff[0]_はvar myString = "['a','b','c']"; alert(myString[0]);と同等です。

次のようにする必要があります。

_<div data-stuff="a,b,c"></div>

var stuff = $('div').data('stuff').split(',');
alert(stuff[0]);
_

撤回:jQueryの解析は、parseJSONのルールを満たさなかったために失敗します。

ただし、ソリューションの後ろに立ちます。このソリューションがいくつかの点で理想的ではないように、他の側面にも理想的ではない側面があります。すべてはあなたのパラダイムが何であるかに依存します。

12
John Green