<select id="abc" multiple="multiple">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">C</option>
</select>
我希望检索所有选定的值。
无论我尝试什么,它似乎只给我列表中最低的所选项目的值。因此,如果我选择A,B和C,它将只返回C.
这些是我尝试过的事情:
$('#abc').val()
$('#abc').text()
$('#abc :selected').val()
$('#abc :selected').text()
$('#abc option:selected').val()
$('#abc option:selected').text()
我使用的jQuery版本是v1.9.1
答案 0 :(得分:3)
您需要使用.each()
遍历select中的所有选定元素,以便逐个访问它们:
$('#abc :selected').each(function(){
console.log($(this).text());
});
或获取数组中的值
var selectedvals = $('#abc').val();
答案 1 :(得分:1)
你可以这样做:
var values = $("#abc option:selected").map(function() {
return this.value;
}).get();
答案 2 :(得分:1)
您可以使用.map()
将值存储在数组中并使用它:
var vals = $('#abc :selected').map(function(){
return this.value;
}).get();
console.log(vals);
或者这样:
var vals = [];
$('#abc :selected').each(function(){
vals.push(this.value);
});
console.log(vals);
答案 3 :(得分:1)
对于this
引用select
元素时的多重选择,您不能使用this.value
,因为它只返回一个值。正如@MilindAnantwar上面提到的那样$(this)
将返回一个数组。如果您对以逗号分隔的字符串而不是数组感兴趣,可以使用join()
数组方法将各种值连接到字符串中:
var selectedOpts = $( '#abc' ).val().join( ',' );
否则,您必须按数组表示法[0], [1], .... [n-1]
访问元素。