【问题标题】:Show dynamic nested dropdown lists in bootstrap在引导程序中显示动态嵌套下拉列表
【发布时间】:2016-11-02 03:15:03
【问题描述】:

我是新手,所以请多多包涵..

我尝试了不同的解决方案,但我没有让我需要的东西正常工作。我的数据列表是使用此代码从 JSON 文件中读取的

function showInsatserList() {
    var promise = [];
    promise = getSelectedSubareaInsatslist();
    promise.done(function (insatserlist) {
        $('#dropdownmenu li').remove();
        for (var i in insatserlist) {
            $('#dropdownmenu').append('<li class="dropdown-submenu"><a href="#">' + insatserlist[i].title + '</a> '
                + '<ul class="dropdown-menu"><li>HEJ</li></ul></li>');
        }
    });
}

然后我用这个来展示它..

$('.insatsDropdown').on('click', function (e) {
    showInsatserList();
});

现在我的 html 看起来像这样......

  <div class="dropdown insatsDropdown">
      <a href="#" class="btn dropdown-toggle" data-toggle="dropdown">Välj insatser <span class="caret"></span></a>
      <ul id="dropdownmenu" class="dropdown-menu"></ul>
  </div>

我想要做的是,当我从下拉菜单中单击任何 li 时,它只会显示底层子菜单,该子菜单目前仅填充了瑞典语“HEJ”中的随机词。

我尝试了标准的点击方法,但唯一适用于动态内容的方法似乎是使用下面的这行代码..

$(document).on('click', '.dropdown-submenu', function (e) {
    $(this).find('ul').toggle(); //not working
});

问题是..我在里面所做的并没有真正切换任何东西

我的小提琴在这里:

https://jsfiddle.net/MissKalani/yvrL24Lv/9/

我现在想做的是.. 例如.. 我点击其中一个 .. 比如“沃尔沃”.. 它会显示底层的 ul 元素。

我也对不同的方法持开放态度。我也尝试在单击时添加 ul 元素,但这对我来说也不起作用。

【问题讨论】:

  • 你读过.next() doco吗?它只选择siblings,并且ul不是被点击的li的兄弟,它是一个child。浏览the list of jQuery traversal methods,我相信你会发现你应该使用的方法......
  • 你能设置一个小提琴吗?那会帮助我们。我想你应该看看 jquery .first() 函数。
  • 我已经设置了一个小提琴 .. 以某种类似的方式除了 jsondata .. 但现在我似乎也无法让它在那里正常工作:( 抱歉 jsfiddle.net/MissKalani/y959b6jd

标签: javascript jquery css twitter-bootstrap html-lists


【解决方案1】:

您必须添加一些额外的样式(下面的代码)才能在悬停时显示嵌套列表。见https://jsfiddle.net/yvrL24Lv/10/

.dropdown-submenu {
    position: relative;
}

.dropdown-submenu>.dropdown-menu {
    top: 0;
    left: 100%;
    margin-top: -6px;
    margin-left: -1px;
    -webkit-border-radius: 0 6px 6px 6px;
    -moz-border-radius: 0 6px 6px;
    border-radius: 0 6px 6px 6px;
}

.dropdown-submenu:hover>.dropdown-menu {
    display: block;
}

.dropdown-submenu>a:after {
    display: block;
    content: " ";
    float: right;
    width: 0;
    height: 0;
    border-color: transparent;
    border-style: solid;
    border-width: 5px 0 5px 5px;
    border-left-color: #ccc;
    margin-top: 5px;
    margin-right: -10px;
}

.dropdown-submenu:hover>a:after {
    border-left-color: #fff;
}

.dropdown-submenu.pull-left {
    float: none;
}

.dropdown-submenu.pull-left>.dropdown-menu {
    left: -100%;
    margin-left: 10px;
    -webkit-border-radius: 6px 0 6px 6px;
    -moz-border-radius: 6px 0 6px 6px;
    border-radius: 6px 0 6px 6px;
}

【讨论】:

  • 啊是的。谢谢。没错。现在这里缺少的是..我想点击..例如沃尔沃..它会显示底层子菜单..这不是atm :(
  • 这是您想要实现的目标吗? jsfiddle.net/yvrL24Lv/10
  • 是的,是的!这就是我想要的!
  • 谢谢。快速的青睐虽然。如果我想使用单击而不是悬停来切换怎么办?当我输入 :active.它似乎可以打开它..但是一旦我删除指针就会关闭菜单
  • @Kalani,这很复杂。我想你必须使用 javascript/jQuery 来覆盖默认列表行为并添加一些类或模拟悬停点击。
猜你喜欢
  • 2021-05-13
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 2018-10-02
相关资源
最近更新 更多