如何在JavaScript中将选项附加到optgroup?

时间:2014-02-20 17:51:46

标签: javascript

我正在尝试使用JavaScript将一些<options>附加到<optgroup>。我的optgroup是在item.Level == 1创建的,然后在该组内,我也想包含我的第二级项目。我对JS并不擅长,所以如果有人可以解决一些问题,那将会有很多帮助。

 if (item.level == 1) {
     $("#chosen-select").append(
     $("<optgroup label='" + item.agencyName + "'>  " + item.agencyName +   ));
 } else if (item.level === 2) {
     $("#chosen-select").append(
         $("<option></option>")
             .text('\xA0\xA0\xA0\xA0\xA0' + item.agencyName)
            .val(item.id)
     );

2 个答案:

答案 0 :(得分:0)

这里你需要的是基本上选择你要附加的<optgroup>

} else if (item.level === 2) {
    $("#chosen-select > optgroup").append( // appending to the optgroup
        $("<option></option>")... // etc.
    );
} // <-- don't forget to close the else if here

P.S。第3行有语法错误,最后有未关闭的else if

答案 1 :(得分:0)

我不确定你的循环是什么样的,但你可以尝试这样的事情:

var $select = $('#chosen-select'),
    $optgroup;

for (var i = 0, l = items.length; i < l; i++) {
    var item = items[i];

    if (item.level == 1) {
        $optgroup = $('<optgroup/>');
        $optgroup.attr('label', item.agencyName)
        $optgroup.appendTo($select);
    } else if (item.level == 2) {
        $optgroup.append(
            $('<option/>')
                .attr('value', item.id)
                .text('\xA0\xA0\xA0\xA0\xA0' + item.agencyName);
        );
    }
}

这会将最后一级1 <optgroup>存储在一个变量中,以便为所有二级项目重复使用。如果在任何1级项目之前有任何2级项目,这将无效。