<select multiple="multiple" class="listBox" name="drop1" id="toList">
<option value="1">John Doe (1)</option>
<option value="2">John Doe (2)</option>
<option value="3">John Doe (3)</option>
<option value="4">John Doe (4)</option>
<option value="5">John Doe (5)</option>
</select>
我试图抓住这个toList中的每一个选项,然后构建一个分隔列表,然后我将发布到另一个页面。
最有效的方法是什么?
我原本想过:
$(#toList).each(function () {
var myList = myList + $(this).val();
});
$.post('somepage.asp', userList: myList);
实现这一目标的最佳方法是什么?
答案 0 :(得分:3)
这应该很好用:
var myList = []
$("#toList > option").each(function () {
myList.push($(this).val());
});
$.post('somepage.asp', userList: myList.join(","));
或者,如果您只想要所选的值:
var myList = []
$("#toList > option:selected").each(function () {
myList.push($(this).val());
});
$.post('somepage.asp', userList: myList.join(","));
答案 1 :(得分:1)
如果您需要每个选定的值,则可以在.val()
上使用select
,因为javascript会自动为您提供所选值的逗号分隔列表:
$.post('somepage.asp', userList: $("#toList").val());
如果你想要select的每个值,那么推送到一个数组:
var values = [];
$("option", this).each(function() {
values.push($(this).val());
});
$.post('somepage.asp', userList: values.join(','));
答案 2 :(得分:0)
您可以尝试jQuery的map()
方法。
var myList = $('#toList option').map(function(){ return this.value; });
alert(myList.toArray().join(','));
map()
通过函数传递当前匹配集中的每个元素,生成一个包含返回值的新jQuery对象。
参考 - http://api.jquery.com/map/
工作演示 - http://jsfiddle.net/Nr4g9/