将一组值传递给Jquery

时间:2012-01-05 11:44:36

标签: javascript jquery

我有一个像这样的按钮:

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

我想知道如何通过JQuery的.val()函数访问这两个值。

我已经尝试了$("#abc").val()[0],但这似乎只是给了我第一个字符,即括号“[”。

我希望.val()[0]给我“Fred”这个值。

4 个答案:

答案 0 :(得分: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]);
};

答案 1 :(得分: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 :(得分:2)

您可以使用eval

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

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

它将返回值数组

答案 3 :(得分:0)

使用“而不是':

修复正确的JSON格式
<button id="abc" value='["fred",26]'></button>

解析字符串:

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

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

abc[0];