javascript - 如何将<select>中的选项动态分组到optgroups中?

标签 javascript jquery knockout.js

我有一个<select>这是动态填充的。我需要将这些选项部分分组为 <optgroup> tag/简化情况下的代码是:

html:

<select id="mySelect" size="9">
</select>
<h1>how to add them with code only?</h1>

JS:

var opt = [
        {name:"somefriend1"},
        {name:"somefriend2"},
        {name:"someother1", tag: 'other'},
        {name:"someother2", tag: 'other'},
        {name:"somerequest1", tag: 'request'},
        {name:"somerequest2"},
        {name:"somesent1", tag: 'request'},
        {name:"somesent2"}
];

$(function(){
    var $select = $('#mySelect');
    $.each(opt, function(index){
            $('<option />').html(this.name).appendTo($select);
            // TODO: group into 
    });
});

作为jsfiddle .

预期结果:

<select id="mySelect" size="9">
  <option>somefriend1</option>
  <option>somefriend2</option>
  <optgroup label="other">
    <option>someother1</option>
    <option>someother2</option>
  </optgroup>
  <optgroup label="request">
    <option>somerequest1</option>
    <option>somesent1></option>
  </optgroup>
  <option>somerequest2</option>
  <option>somesent2</option>
</select>
<h1>how to add them with code only?</h1>

我的完整情况是:我有一个<select>这是在 knockout.js 的帮助下生成的,如下所示:

<select class="form-control" data-bind="options: $data.options, optionsText: 'name', optionsAfterRender: $data.setOptionDisable, value: $data.cur"></select>

我想使用optionsAfterRender <select> 时适当回调以分组选项正在生成。

编辑:非常抱歉,我弄乱了我的 jsfiddle 和我用作基础的一个。

最佳答案

在我看来,需要进行一些 DOM 操作才能获得您正在寻找的内容,这可能对您有用......

 self.setTagGroup=function(option, item)
    {
        if(item.tag)
        {
            var grp =$(option).parent("select").find("[label="+item.tag+"]");
            if(grp.length==0)
            {
                grp = $("<optGroup></optGroup>");
                grp.attr("label",item.tag);
                $(option).parent("select").append(grp);
            }
            grp.append($(option));
        }
    }

并在标记中

<select size="8" data-bind="options: users, optionsText: 'name', optionsAfterRender: setTagGroup, value: selectedUser"></select>

fiddle 手http://jsfiddle.net/m6e478sd/13/

关于javascript - 如何将<select>中的选项动态分组到optgroups中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33575580/

相关文章:

c# - MVC Controller 操作返回字符串的替代方案?

javascript - observableArray 中可观察值的 knockout 计算

javascript - 自定义 Javascript 滚动插件不起作用

javascript - 在本地运行时从不同域删除 cookie

javascript - AJAX 请求有效负载未显示在控制台日志中

javascript - 保留 pushstate 的原始 url

javascript - 如何在 Javascript 中以编程方式制作控制字符?

html - 如何合并重复函数的 Jquery 选择器?

javascript - 显示多个父 div 的子 div

javascript - 如何测试 Jasmine 中的方法是否只被调用一次而不是第二次?