使用 ul li 生成 Jquery 多级菜单列表

2023-12-29

...images
......|vertical
......|horizontal
...Jquery
......|UI
......|include
...quickfox

要处理的数组:我有像上面一样的文件夹结构。它存储在数组目录中。见下文

var dirs = [ 
        "images",
        "images/vertical",
        "images/horizontal",
        "Jquery",
        "Jquery/UI",
        "Jquery/include",
        "quickfox"
        ];

客观的:我怎样才能使嵌套的 ul li 如下。

<ul id="categorymenu">
    <li>images </li>
    <ul>
        <li>vertical</li>
        <li>horizontal</li>
    </ul>
    <li>Jquery</li>
    <ul>
        <li>UI</li>
        <li>include</li>
    </ul>
    <li>quickfox</li>
</ul>

更新:XML 结构

<directory name="images">
   <file path="BBB.gif" width="500" height="282">BBB.gif</file>
   <file path="AAA.jpg" width="964" height="525">AAA.jpg</file>
   <directory name="images/vertical">
      <file path="CCC.jpg" width="964" height="525">CCC.jpg</file>
   </directory>
   <directory name="images/horizontal">
      <file path="DDD.jpg" width="964" height="525">DDD.jpg</file>      
   </directory>
</directory>

这是我从 xml 制作数组的地方..

$(document).ready(function () {
    //------ READ XML -----------
    $.ajax({
        type: "GET",
        url: "___deck.xml",
        dataType: "xml",
        success: function (data) {
            my_xml = data;
            xmlDirParser(my_xml);
        }
    });
    //------ Get Files on List Change  -----------
    $("#dirlist").change(function () {
        var folder = $(this).find('option:selected').text();
        xmlFileParser(folder, my_xml);
    });
});

function xmlDirParser(my_xml) {
    $(my_xml).find('directory').each(function () {
        var dirname = $(this).attr('name');
        // $('#dirlist').append('<option value="1">'+dirname+'</option>');
        //This is where I get dirs array
    });
}

数组的结构对于创建元素没有用,您可以基于数组创建一个对象并使用该对象。

var o = {}; 

// Creating an object based on the array elements
$.each(dirs, function (_, value) {
    if (value.indexOf('/') === -1) {
        o[value] = [];
    } else {
        var arr = value.split('/');
        o[arr[0]].push(arr[1]);
    }
});

// Creating elements

var html = '<ul id="categorymenu">';
for (key in o) {
    html += '<li>' + key + '</li>';
    if (o[key].length) {
        html += '<ul><li>' + o[key].join('</li><li>') + '</li></ul>';
    }
}
html += '</ul>';

http://jsfiddle.net/5DuDp/ http://jsfiddle.net/5DuDp/

Update:

我没有注意到预期的标记无效,ul元素应该只具有li子元素,您应该添加后代ul元素到li元素:

for (key in o) {
    html += '<li>' + key ;
    if (o[key].length) {
        html += '<ul><li>' + o[key].join('</li><li>') + '</li></ul>';
    }
    html += '</li>';
}
html += '</ul>';

http://jsfiddle.net/642pr/ http://jsfiddle.net/642pr/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ul li 生成 Jquery 多级菜单列表 的相关文章

随机推荐

  • Spark Streaming现在支持Kafka 1.1.0吗?

    现在spark版本是2 3 我看到了maven中央存储库 https search maven org search 7Cga 7C1 7Cg 3A 22org apache spark 22 https search maven org
  • gnuplot:绘制来自标准输入的两个数据集

    我在尝试从 gnuplot 中的 stdin 绘制两个不同的数据集时遇到一些问题 这是我正在测试的命令 gnuplot persist lt
  • 在 NSArray 中搜索最近的数字

    有没有一种简单的方法可以搜索NSArray找到与用户输入数字最接近 或精确 如果存在 匹配的数字 假设我有一个像这样的数组 7 23 4 11 18 2 然后用户输入5 该程序按紧密度降序返回三个最接近的值 4 7 2 and 最重要的是给
  • 克服 java.net.MalformedURLException: 无协议异常

    我有一个属性文件 其中包含一个属性 指定包含温度数据集的 NOAA 网站的 URL 该属性包含一个 DATE REPLACE 令牌 因为当 NOAA 生成新的预报时 URL 每天都会变化 在我的属性文件中 我指定 WEATHER DATA
  • 如何告诉 maven-shade-plugin 保留签名?

    我正在使用 maven shade plugin 将两个单独的 jar 组合成一个组合的 jar 其中一个罐子有签名 而另一个则没有 如果我使用插件的默认配置 它将构建一个损坏的 jar 因为新清单缺少签名所需的摘要 我可以通过排除签名文件
  • ASP.NET 图表控件无法在生产服务器上运行

    我有一个严重依赖图表的应用程序 目前图表可以在 ASP Net 开发服务器中工作 但是当我尝试发布到我的服务器 Win 2008 Server R2 IIS 7 时 图表不显示 使用 Firebug 我可以看到对 ChartImg axd
  • 识别解析实例的依赖关系 - IoC (autofac)

    有没有办法确定哪个调用者 依赖项正在解析它所依赖的实例 这就是我的想法 public class A public A Console Write I am being resolved by 0 public class B public
  • Javascript 是一个合适的密码学平台吗?或者说,可以吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Webhooks 可以与 GitHub OAuth 应用程序一起使用吗?

    所以我一直在阅读 GitHub 开发人员文档 关于 webhooks 他们有以下声明 Webhooks 允许您构建或设置订阅 GitHub com 上某些事件的 GitHub 应用程序 当这些事件之一被触发时 我们将向 Webhook 的配
  • 在谷歌电子表格中将单元格格式设置为分钟:秒

    我希望记录我完成某个编程问题所需的时间数据 我正在使用谷歌电子表格来保持我的表现 面临的问题是 我希望细胞接受结果mm ss 但谷歌表正在将其转换为12 hr格式即hh mm ss 我怎样才能阻止这种情况发生 例如 1 30被转换为凌晨 1
  • GO存储数据返回EOF

    我是 golang 新手 我正在尝试构建 Rest api 到目前为止 GET 端点对我来说工作得很好 但是我在使用 POST 方法 创建用户 时遇到了困难 这就是我的 User 结构的样子 type User struct ID uint
  • 处理失败的期货

    在 Play Framework 2 3 中 操作可以从成功的未来调用中产生结果 如下所示 def index Action async val futureInt scala concurrent Future intensiveComp
  • XPath 如何以名称空间不知道的方式识别谓词中的属性[重复]

    这个问题在这里已经有答案了 我有以下 XML 文件
  • 为数据库中的日期添加 30 天

    我在数据库中发布了更新日期和发布日期 目前它们的日期相同 我如何更改它 在 mysql 插入期间 以便发布日期比发布更新日期晚 30 天 我正在使用 pubDate Thanks 您可以使用日期添加 http dev mysql com d
  • PM2 Flush 不清除日志

    我运行的 Ubuntu 服务器突然满了 因为 pm2 日志占用了 16GB 我试过pm2 flush 但这只会清除占用 4GB 的文件夹 作为 root pm2 文件夹被清除 但日志文件夹未被清除 作为我自己的用户 该文件夹已被清除 但用户
  • 在Python中如何将`email.message.Message`对象转换为`email.message.EmailMessage`对象

    据我了解mboxPython 3 6 标准库中的类生成以下类型的旧式消息对象email message Message 较新的班级email message EmailMessage3 4 3 6 中引入的功能可以更轻松地访问消息内容 通过
  • 禁用 nginx 中的请求缓冲

    看起来 nginx 在将请求传递到上游服务器之前会缓冲请求 虽然对我来说大多数情况下都可以 但这是非常糟糕的 我的情况是这样的 我有 nginx 作为前端服务器来代理 3 个不同的服务器 apache 与典型的 php 应用程序 我用 py
  • lambda函数使用其参数作为模板参数调用模板函数

    以下是示例代码 无法编译 We use 迭代函数来迭代某个范围并运行 lambda 回调函数 这iterate函数将传递一些指示 即type 到回调 lambda 函数 然后该函数将根据指示进行工作 由于这些指示在编译时是固定的 我相信有一
  • Collection.stream() 的实现

    我已经在 J DK 1 8 上工作了几天 我遇到了一些与此类似的代码 List
  • 使用 ul li 生成 Jquery 多级菜单列表

    images vertical horizontal Jquery UI include quickfox 要处理的数组 我有像上面一样的文件夹结构 它存储在数组目录中 见下文 var dirs images images vertical