我如何通过jQuery传递它的ID来获得一个选择的所有选项?

我只是想获取它们的值,而不是文本。


当前回答

这是一个简单的jQuery脚本:

var items = $("#IDSELECT > option").map(function() {
    var opt = {};
    opt[$(this).val()] = $(this).text();
    return opt;
}).get();
var selectvalues = [];

for(var i = 0; i < items.length; i++) {
    for(key in items[i]) {


        var id = key;
        var text = items[i][key];

        item = {}
        item ["id"] = id;
        item ["text"] = text;

        selectvalues.push(item);

    }
}
console.log(selectvalues);
copy(selectvalues);
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

其他回答

美元。地图可能是最有效的方法。

var options = $('#selectBox option');

var values = $.map(options ,function(option) {
    return option.value;
});

如果你只想要那些被选中的选项,你可以在$('#selectBox option:selected')中添加更改选项。

第一行选择所有复选框,并将其jQuery元素放入变量中。然后,我们使用jQuery的.map函数对该变量的每个元素应用一个函数;我们所做的只是返回每个元素的值,因为这是我们所关心的。因为我们是在map函数内部返回它们,它实际上会根据请求构建一个值的数组。

$('select#id').find('option').each(function() {
    alert($(this).val());
});

如果您正在寻找一些选定文本的所有选项,那么下面的代码将工作。

$('#test').find("select option:contains('B')").filter(":selected");

我发现它既简短又简单,并且可以在Dev Tool控制台本身进行测试。

$ (" # id选项”)。Each ((index,element)=>console.log(index: ${index},值:${element. log)Value}, text: ${element.text})

工作示例

最有效的方法是使用$.map()

例子:

var values = $.map($('#selectBox option'), function(ele) {
   return ele.value; 
});