2011-05-12 14 views
4

我想使用jquery将多选dropDown值(所有选项)转换为数组。如何使用jquery将多选下拉列表中的所有项目(选项)转换为数组

<select size="10" style="width: 330px;" name="itemList" 
     id="selectedItemLists" multiple="multiple"> 
    <option value="1">value1</option> 
    <option value="2">value2</option> 
    <option value="3">value3</option> 
    <option value="4">value4</option> 
</select> 

现在使用jQuery如何创建一个像数组[0] =值,数组[1] =数值数组...

请帮我在这。

在此先感谢。

+0

所有选项,或所有*选择*选项? – 2011-05-12 20:17:20

回答

6

可能是这样的:

var options = new Array(); 
$('#selectedItemLists > option:selected').each(
    function(i){ 
     options[i] = $(this).val(); 
    }); 

JS Fiddle demo


响应@ mellamokb的评论编辑,修正了jQuery使用 text()而不是 val()

var options = new Array(); 
$('#selectedItemLists > option:selected').each(
    function(i){ 
     options[i] = $(this).text(); 
    }); 

JS Fiddle demo

参考文献:

+1

+1从技术上讲,对于OP的要求,我想你会想要'.text();'http://jsfiddle.net/ZeGKP/ – mellamokb 2011-05-12 20:20:32

+0

啊,你可能是对的... +1 :) – 2011-05-12 20:25:07

+0

我相信在JavaScript中初始化数组的首选方法是''''而不是'new Array()':http://www.hunlock.com/blogs/Mastering_Javascript_Arrays – mellamokb 2011-05-12 20:28:04

3

您也可以使用.map()来完成此操作。

var i = $.map($("#selectedItemLists option:selected"), function(elem){ 
    return $(elem).text(); 
}); 

Example on jsfiddle

2

jQuery的map方法是有用的在这里。

$('select option').map(function(index, elem){ 
    return $(elem).text(); 
}); 

(马克打我给它,但我使用收集的map方法,而不是“静态” jQuery.map功能,两者都很好,当然)。

相关问题