基于现有jQuery代码,如何从JSON生成带链接的嵌套列表?
解决方案:实现带链接的嵌套分类列表
直接给你修改好的代码,能实现你要的效果——顶层显示分类名称,子级列表生成对应url的可点击链接:
修改后的JavaScript代码
$(document).ready(function () { var $ul = $('<ul></ul>'); var usefullinks = [ { "category": "Category 2", "links": [ { "url": "https://example.org", "text": "Some Link" } ] }, { "category": "Test", "links": [ { "url": "http://google.net", "text": "Link 1" }, { "url": "https://example.com", "text": "Link 2" } ] } ]; getList(usefullinks, $ul); $ul.appendTo(".main"); }); function getList(item, $list) { if($.isArray(item)){ $.each(item, function (key, value) { getList(value, $list); }); return; } if (item) { var $li = $('<li/>'); // 处理分类项(带category字段) if (item.category) { // 这里改成纯文本,要是需要顶层带链接,就换回原有的a标签写法 $li.text(item.category); // 如果要顶层带链接,用下面这行替换上面的text: // $li.append($('<a href="#">' + item.category + '</a>')); } // 处理链接项(带url和text字段) else if (item.url && item.text) { $li.append($('<a href="' + item.url + '">' + item.text + '</a>')); } // 递归处理子链接列表 if (item.links && item.links.length) { var $sublist = $('<ul/>'); getList(item.links, $sublist); $li.append($sublist); } $list.append($li) } }
HTML代码(修正了原代码的转义字符)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="main"> </div>
关键改动说明
- 区分分类与链接项:在
getList函数里新增判断逻辑,当item包含url和text时,生成带真实跳转地址的链接标签,不再走分类的处理逻辑 - 顶层分类灵活设置:默认把顶层分类设为纯文本,若需要顶层也带链接,注释掉
$li.text(item.category),启用下方的a标签代码即可 - 修正转义字符:原代码里的
</>是HTML转义符,直接用<>写jQuery元素更直观易读
内容的提问来源于stack exchange,提问作者webmonkey237
相关产品推荐
相关产品推荐

