我有几个选择的数组作为名称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>
感谢。
答案 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的名称