javascript - 如何将 OPTGROUP 添加到 select 语句?

标签 javascript jquery select drop-down-menu optgroup

我正在使用以下内容通过 jQuery 构建一个下拉选项:

var myOptions = {
    var1 : 'Road',
    var2 : 'Rail'
};

var mySelect = $('#q54');
    $.each(myOptions, function(val, text) {
        mySelect.append(
            $('<option></option>').val(text).html(text)
    );
});

构建下拉菜单,没问题 - 然后我尝试附加 optgroup 选项 - 我尝试添加以下代码以将 optgroup 包裹在选项周围但没有喜悦。

var i = 1; // Addition
$.each(myOptions, function(val, text) {
    if(i == 1){
        $("#q54").append('<optgroup class="optgroups" label="Team">');
    }
    mySelect.append(
        $('<option></option>').val(text).html(text)
    );
    if(i == 2){
        $("#q54").append('</optgroup>');
    }
});

上面的 HTML 输出是:

<optgroup class="optgroups" label="Team"></optgroup>
<option value="Road">Road</option>

输出应该是:

<optgroup class="optgroups" label="Team">
    <option value="Road">Road</option>
</optgroup>

欢迎任何建议。

最佳答案

像 html 字符串一样考虑 jQuery append() 是您在这里面临的问题。

var myOptions = {
    var1 : 'Road',
    var2 : 'Rail'
};    
var i = 1; // Addition
var $group = $('<optgroup class="optgroups" label="Team">');
$("#q54").append($group);
$.each(myOptions, function(val, text) {
    $group.append($('<option></option>').val(text).html(text));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="q54"></select>

另一个解决方案是像 Pointy 建议的那样使用 wrapAll()

var myOptions = {
    var1 : 'Road',
    var2 : 'Rail'
};    
var i = 1; // Addition
$.each(myOptions, function(val, text) {
    $("#q54").append($('<option></option>').val(text).html(text));
});
$("#q54").children().wrapAll('<optgroup class="optgroups" label="Team">');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="q54"></select>

关于javascript - 如何将 OPTGROUP 添加到 select 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46891118/

相关文章:

javascript - 如何让 css 代码运行一定时间?

jquery - 虚拟滚动/分页

javascript - 与 JavaScript 生成的 HTML 交互

javascript - 根据用户在下拉列表中的选择是否与公司数据属性匹配来过滤/隐藏 div

javascript - Google 闭包编译器和 UMD 模式

javascript - 如何使用 keyup 事件创建复杂的公式

javascript - 如何使用 KnockoutJS 为 iframe 数据绑定(bind)内容?

php - MySQL查询选择数据

javascript - 在 MSCRM 2015 中使用 javascript 限制多实体查找

c# - 将 JavaScript 自定义类型从 InvokeScript 返回到 C#,并保留自定义类型结构