0

我有一个多选,我需要从中获取所有选项的 value 属性——不仅仅是选定的选项——使用 jQuery。

我试过

$('#multiSelectAssignedGoTosForCourse').each(function (index) {
    console.log('index: ' + index + ', value: ' + $(this).val())
});

但这不起作用(我认为它不会,但我不确定要尝试什么)。

理想情况下,我需要构建一个以逗号分隔的值列表,这些值只是数字(选项的数据库 ID)。

4

4 回答 4

4

您正在遍历具有该 ID 的每个对象,可能只有一个。

相反,您需要遍历option它下面的标签:

$('#multiSelectAssignedGoTosForCourse option').each(function(idx) {
    // etc.
});
于 2013-07-01T14:17:48.390 回答
3
var values = $('multiSelectAssignedGoTosForCourse option').map(function () {
    return this.value;
}).get();

演示

这将为您提供所有值的数组。

或者

使用attr()回调:

var values = [];
$('#multiSelectAssignedGoTosForCourse option').attr('value', function() {
   values.push(this.value);  
});

演示

于 2013-07-01T14:19:19.990 回答
1

#multiSelectAssignedGoTosForCourse当前只循环一个元素。您要么必须用作选择器,要么在循环之前#multiSelectAssignedGoTosForCourse option使用该.children()方法:

$('#multiSelectAssignedGoTosForCourse').children().each(function(i) {
    console.log("index: "+i, "value: "+this.value);
});

我需要建立一个逗号分隔的值列表

然后使用以下内容:

var numbers = $.map($('#multiSelectAssignedGoTosForCourse').children(), function() {
    return this.value;
}).join(",");
于 2013-07-01T14:18:22.967 回答
1

这是您可以执行的操作:

$(function(){
 var arr = [];
 $('#multiSelectAssignedGoTosForCourse').children().each(function(){
     arr.push($(this).val());
 });
});

这是一个工作小提琴:http: //jsfiddle.net/5XhL2/

于 2013-07-01T14:20:22.707 回答