有一个可能无限的下拉集合,给它们所有相同的类,需要能够访问,循环,并收集所有下拉选项上的选定值,无论有多少。最终形式应该类似于5,6,7,6,4,2,3,4,3,4,作为所有下拉列表中所选值的逗号分隔列表。
答案 0 :(得分:1)
var ids = $("select.classname > option:selected").map(function(n, i) {
return $(n).val();
}).join(",");
解释这是在做什么:
map()
方法获得了一组值; join()
函数将该数组转换为逗号分隔列表。例如:
<select class="classname">
<option value="1">One</option>
<option value="2" selected>Two</option>
<option value="3" selected>Three</option>
</select>
<select class="classname">
<option value="4">Four</option>
<option value="5" selected>Five</option>
</select>
首先使用$()
构造所选选项(2,3和5)的jQuery对象,将值属性映射到{2,3,5}
数组中,然后将它们连接成逗号分隔的字符串"2,3,5"
。
答案 1 :(得分:1)
似乎cletus提出的答案有两个问题需要解决我的jQuery版本(1.6.2)。下面的代码对我来说正常工作,并在cletus的帖子中使用样本HTML时提醒“3,5”。请注意,它会从第一个HTML选择块中找到 last 选项,而不是两个选中的选项。
var ids = $("select.classname > option:selected").map(function(n, i) { return $(i).val() } ).toArray().join(",");
alert(ids);
首先,它在map函数回调中使用了错误的参数。我需要将 n 更改为我:return $(n).val()
vs return $(i).val()
其次,在使用数组方法“join”之前,它返回了一个需要转换为数组的jQuery对象:.toArray().join(",")
一旦完成了这两个小修改,cletus的回答在jQuery 1.6.2中完美适合我