javascript - 将导航包裹在子导航中

标签 javascript jquery

我有一个动态创建的导航,但无法创建用于导航的父/子列表。

我想根据可用空间在列表末尾添加一个名为“更多...”的链接。然后将所有剩余元素显示为更多...的子元素...

例如,如果我有元素 list1、list2、list3、..... list10。

它将显示为 list1、list2、list3、more...,其余链接将是 more...的子链接

我尝试为此创建一个脚本,我认为我已经非常接近了。但我有以下两个问题:

  1. 如何在子列表周围添加 UL。
  2. 有时“更多...”会断到下一行。

以下是我的JS代码:

    $(document).ready(function() {
       var nav = $('ul');

       var more = '<li><a href="#">More...</a></li>';

       nav.prepend( more );

       var availableSpace = nav.innerWidth();
       var list = 0;
       var countedSpace = 0;

       $('li').each(function(){
          var current = $(this);
          countedSpace = countedSpace+current.outerWidth();
          if (countedSpace < availableSpace) {
             list++;
          }
       })

       var showInList = list; //Space available for xx no. of items.

       var newList = [];
       // Start at 2, don't include dynamically added more link.
       for (i = 2; i < showInList; i++) { 
           newList.push($(nav).find("li:nth-child("+i+")"));
       }

       newList.push(more);

       var childList = [];
       for (i = showInList; i <= nav.children().length; i++) { 
           childList.push($(nav).find("li:nth-child("+i+")"));
       }

       //nav.empty();
       nav.html(newList);

       $(nav).find("li:last-child").append(childList);
    });

jsfiddle:http://jsfiddle.net/alokjain_lucky/Lhh019ru/

最佳答案

1。如何在子列表周围添加 UL。

尝试创建一个 jquery UL 对象,然后将 li 项附加到它。像这样:

var ulChildren = $("<ul/>").append(childList);
$(nav).find("li:last-child").append(ulChildren);

2。有时“更多...”会断到下一行。

发生这种情况是因为 li 子项可见并且堆叠在右侧,请尝试添加

li ul{
     display:none;
}

在第 1 步之后测试正确的布局。

这是 JSFiddle 上的上述示例,单击“更多...”以切换子级可见性

Example code

关于javascript - 将导航包裹在子导航中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27000785/

相关文章:

javascript - 在 typescript 中向现有类添加方法?

javascript - 强制不同的 npm 模块共享相同的依赖

javascript - 如何使用 javascript 或 jquery 激活按钮?

javascript - 通过 jQuery 设置值后验证字段

javascript - JQuery - Ajax 获取请求 - 没有在响应中返回 "extracts"或 "exintro"(摘要)属性

javascript - 如何从父js调用原型(prototype)

javascript - 无法在使用 jquery html() 函数添加的 'new html code' 上执行 js 代码

javascript - 扩展和探索 json 对象,而无需 console.log(obj) 它们

javascript - 持久 header 导致网站高度崩溃

jQuery Mobile,HTML5,设置类型为 ="date"的输入字段