首页 文章

如何使用jQuery获取select的所有选项?

提问于
浏览
362

如何通过传递其ID来获取select jQuery的所有选项?

我只是想要获得他们的 Value 观,而不是文本 .

14 回答

  • 3

    使用:

    $("#id option").each(function()
    {
        // Add $(this).val() to your list
    });
    

    .each() | jQuery API Documentation

  • 46

    我不知道jQuery,但我知道如果你得到select元素,它包含一个'options'对象 .

    var myOpts = document.getElementById('yourselect').options;
    alert(myOpts[0].value) //=> Value of the first option
    
  • 63
    $("#id option").each(function()
    {
        $(this).prop('selected', true);
    });
    

    虽然, CORRECT 方式是设置元素的DOM属性,如下所示:

    $("#id option").each(function(){
        $(this).attr('selected', true);
    });
    
  • 15

    您可以通过复选框的名称获取所有“选定值”,并将它们显示在以“,”分隔的标记中 .

    一个很好的方法是使用jQuery的$ .map():

    var selected_val = $.map($("input[name='d_name']:checked"), function(a)
        {
            return a.value;
        }).join(',');
    
    alert(selected_val);
    
  • 0
    $('select#id').find('option').each(function() {
        alert($(this).val());
    });
    
  • 1

    如果您正在查找包含所选文本的所有选项,则以下代码将起作用 .

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

    您可以使用以下代码:

    var assignedRoleId = new Array();
    $('#RolesListAssigned option').each(function(){
        assignedRoleId.push(this.value);
    });
    
  • 558

    这是一个简单的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>
    
  • 0
    $("input[type=checkbox][checked]").serializeArray();
    

    要么:

    $(".some_class[type=checkbox][checked]").serializeArray();
    

    要查看结果:

    alert($("input[type=checkbox][checked]").serializeArray().toSource());
    
  • 2

    这会将 #myselectbox 的选项值放入一个漂亮的干净数组中:

    // First, get the elements into a list
    var domelts = $('#myselectbox option');
    
    // Next, translate that into an array of just the values
    var values = $.map(domelts, function(elt, i) { return $(elt).val();});
    
  • 125

    对于多选选项:

    $('#test').val() 返回所选值的列表 . $('#test option').length 返回选项总数(选中和未选中)

  • 148

    $.map 可能是最有效的方法 .

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

    如果只需要选择的选项,可以将更改选项添加到 $('#selectBox option:selected') .

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

  • 11

    一些答案使用 each ,但是 map 在这里是更好的选择恕我直言:

    $("select#example option").map(function() {return $(this).val();}).get();
    

    jQuery中有(至少)两个 map 函数 . Thomas Petersen的回答使用"Utilities/jQuery.map";这个答案使用"Traversing/map"(因此代码更清晰) .

    这取决于你将如何处理这些值 . 如果您想要从函数返回值, map 可能是更好的选择 . 但是,如果您要直接使用这些值,您可能需要 each .

  • 9

    Working example

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

    Example:

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

相关问题