2012-01-05 41 views
2

我像一個按鈕,以便:傳遞數值數組jQuery的

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

我想知道我如何通過JQuery的.VAL()函數訪問這兩個值。

我試過$("#abc").val()[0]但這似乎給了我的第一個字符是括號「[」。

我想.val()[0]改爲給我價值「弗雷德」。

+0

你真的想要一個顯示「['fred',26]」的按鈕給用戶嗎?也許你想使用'data-values ='[「fred」,26]'(注意我也修復了無效的HTML)。 – 2012-01-05 11:49:24

回答

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

#馬特:夠公平的。 :-)我們都有我們的東西。 – 2012-01-05 11:58:28

2

Matt's suggestion是好的(他是對的,你的HTML是無效的)。

另一種方法,由於元素具有ID,因此將值分開存儲在JavaScript中而不是標記中。由於ID是定義在頁面上獨一無二的,你可以有:

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

...然後,你要使用它,如果你知道ID(在你的代碼,你做什麼,你使用它發現通過$("#abc"))的元素:

var values = elementValues.abc; 

...或者在事件處理程序,你也不一定知道在代碼的ID,假設this是有問題的元素(因爲它是在jQuery中的事件處理程序):

var values = elementValues[this.id]; 
2

可以使用值

的EVAL

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

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

它將返回數組

0
使用「

修復正確的JSON格式insted的的「:

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

解析字符串:

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

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

abc[0];