首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jquery添加optgroup

使用jquery添加optgroup
EN

Stack Overflow用户
提问于 2014-12-22 16:35:48
回答 2查看 493关注 0票数 0

当我使用jquery将optgroup添加到下拉菜单时,我遇到了一个问题,它没有出现。通过检查源,我可以看到结束标记已经放置在末尾,从而在添加内容之前关闭optgroup。我尝试过各种添加内容的方法。

因此,在脚本的顶部,我创建了一个具有服务器环境的散列,这将复述

页面顶部:

JAVASCRIPT

代码语言:javascript
复制
serverList["BERT"] = ["server1", "server2"

函数createServerListNEW(env) {

代码语言:javascript
复制
    if (env != "") {

        if (! serverList[env]) {
            fadeInfoText("ERROR! No Lookup for " + env);
            return;
        }

        $("#ss1").append("<optgroup label='" + env + "'>");

        for (var j = 0; j < serverList[env].length; j ++) {
            serveritem = serverList[env][j]
            $("#ss1").append("<option value='" + serveritem + "'>" + serveritem + "</option>");
        }

        $("#ss1").append("</optgroup>");
        $("#ss1").multiselect('refresh');
    }
}

运行后输出

代码语言:javascript
复制
    <select title="Server Selection" multiple="multiple" name="ss1" id="ss1" size="15" style="display: none; border-color: black; background-color: white;">  
<optgroup label="BERT"></optgroup>
<option value="server1">server1</option>
<option value="server2">server2</option>
</select>
EN

回答 2

Stack Overflow用户

发布于 2014-12-22 16:38:18

这不是你创建元素的方式。

$("#ss1").append("<optgroup label='" + env + "'>");执行时,已经有了</optgroup>。所以你需要删除最后一个附件。

然后,您必须使用<option><optgroup>附加到find

代码语言:javascript
复制
for (var j = 0; j < serverList[env].length; j ++) {
   serveritem = serverList[env][j]
   $("#ss1").find("optgroup").append("<option/>", { 
        value : serveritem,
        text : serveritem
   });
}
票数 0
EN

Stack Overflow用户

发布于 2014-12-22 16:49:41

这背后的想法是,我有多个env复选框在一个页面上,我想有一个服务器列表下的每个ENV。因此,如果我单击BERT复选框,那么将创建optgroup BERT,然后将数组中的所有服务器都放在该列表下。同样,有人单击另一个ENV,然后应该创建另一个optgroup,并在其下面为该env创建服务器。

我也希望这样,如果有人取消了选择,那么optgroup和服务器就会被移除,但是还没有到那个部分:)

好的,我设法让它使用下面的代码,您的建议不适用于IE8,因为下拉列表的内容丢失了,这是我之前讨论过的一个问题:

代码语言:javascript
复制
function createServerList(env) {

    if (env != "") {

        if (! serverList[env]) {
            fadeInfoText("ERROR! No Lookup for " + env);
            return;
        }

        $("#ss1").append("<optgroup label='" + env + " Server List'>");

        for (var j = 0; j < serverList[env].length; j ++) {
            serveritem = serverList[env][j]
            $("#ss1").find("optgroup").append("<option value='" + serveritem + "'>" + serveritem + "</option>");
        }

        $("#ss1").multiselect('refresh');
    }
}

非常感谢你的建议,并为我指明了正确的方向。现在转到删除(如果未选中lol :)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27606688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档