2012-01-05 12 views
2

に値の配列を渡す:私はそうのようなボタンを持っているのjQuery

<button id='abc' value=['fred', 26]></button> 

私はjQueryの.val()関数を介して、これら2つの値をアクセスする方法を知りたいです。

私は$("#abc").val()[0]を試しましたが、それは私に最初の文字「[」を与えるように見えます。

私は.val()[0]の代わりに私に値 "フレッド"を与えたいと思います。

+0

「['fred'、26]」と表示されるボタンが本当に必要ですか?おそらく、あなたは 'data-values = '[" "fred"、26]' '(無効なHTMLを修正したことに注意してください)を使いたいかもしれません。 –

答えて

9

お客様のHTMLは無効です。試してみてください;

<button id='abc' value="['fred', 26]"></button> 

ただし、配列としてデータを解析することができますし、valid JSON notationを使用して見なければなりません。 JSONでは、文字列にはダブルクォートが必要です(単一の'ではなく)。

<button id='abc' value='["fred", 26]'></button> 

あなたは今、直接$('#abc').val()にアクセスした場合、あなたは["fred", 26]文字列を取得すると思います。このデータを配列として取得するには、jQuery.parseJSON()を使用してデータを解析する必要があります。

var array = jQuery.parseJSON($('#abs').val()); 
for (var i=0;i<array.length;i++) { 
    alert(array[i]); 
}; 
+0

#マット:十分に公正。 :-)私たちはすべて私たちのものを持っています。 –

2

Matt's suggestion良いです(と、彼はあなたのHTMLが無効であることを右です)。

もう1つのアプローチは、要素にIDがあるため、マークアップではなくJavaScriptに別々に値を格納することです。

<script> 
var elementValues = {}; 
elementValues.abc = ['fred', 26]; 
</script> 

を...そしてあなたはそれを使用したい場合は、あなたがあなたがあなたのコード内のIDを(知っていれば、あなたはそれを使用している:IDは定義により、ページ上で一意であるので、あなたが持っている可能性がありそれがであるようthisと仮定すると(問題の要素であり、

var values = elementValues.abc; 

...またはあなたが必ずしもコードでIDを知らないイベントハンドラで:$("#abc")経由要素)を見つけるためにjQueryのイベントハンドラ):

var values = elementValues[this.id]; 
2

あなたはそれが値

0

の配列を返しますevalを

<button id="abc" value='["fred",26]'></button> 

var values = eval($("#abc").val()); 
values[0] 
values[1] 

を使用することができます "「のinstedを使用して、正しいJSON形式を修正:

<button id="abc" value='["fred",26]'></button> 

は、文字列を解析:

$.parseJSON($('#abc').val())[0]; 

または

var abc = $.parseJSON($('#abc').val()); 

abc[0]; 
関連する問題