我有一个像这样的按钮:
<button id='abc' value=['fred', 26]></button>
我想知道如何通过JQuery的.val()函数访问这两个值。
我已经尝试了$("#abc").val()[0]
,但这似乎只是给了我第一个字符,即括号“[”。
我希望.val()[0]
给我“Fred”这个值。
答案 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];