如何遍历选择对象数组

时间:2011-10-05 11:04:02

标签: javascript jquery

我有几个选择的数组作为名称attrib。 这个选择可以在html的不同部分有多个不同的值,所以我想迭代名称数组中存储项的值。

我谷歌已经有一段时间了,并没有找到一个好的答案(也在这里堆栈......),但是有人知道如果可能的话我如何用jquery迭代select数组的值或者js如果不? 我试过这个但是没有用

Jquery代码:

// i get the name of the select correctly
var itemName = $(this).find("select#selectToONE").attr("name");

// try to iterate through the values when the array grows... not work
$("select[@name='"+itemName+"[]']").each(function() { alert($(this).val());} );

这里有一些html代码可能在一个TR,TD中:

<select name="To[itemsONE][]" id="selectToONE"> 
<option>....</option>
<option>....</option>
</select>

其他选择其他TR,TD

<select name="To[itemsONE][]" id="selectToONE">
<option>....</option>
<option>....</option>
</select>

感谢。

2 个答案:

答案 0 :(得分:0)

要匹配CSS中的属性值,请不要使用@字符:

$("select[name='"+itemName+"[]']")

答案 1 :(得分:0)

获取所需的所有选项:

$("select[name='"+itemName+"[]'] option").each(function(i,o){
  alert(o.value);
});

<强>更新

迭代从特定选择 name 属性创建的数组

var itemName = $("#selectToONE").attr("name"); // You have a string here 'To[itemsONE][]'
var s        = itemName.substring(itemName.indexOf('[')); //[itemsONE][]

现在问题是,如果 itemsONE IS 变量或函数的名称使用

var array = eval(s); //and iterate it in classic for loop

如果它是 NOT 变量的名称,您还需要将SELECT重命名为这样的

<select name="To['itemsONE'][]" ...

任何其他解决方案都涉及通过预定义模式或正则表达式手动解析SELECT的名称