layui树形菜单可以通过id进行操作吗

 我来答
温州瓯越培训学校
2017-10-23
温州瓯越培训学校
温州市瓯越职业培训学校是一家经温州市民政局批准成立的专门从事培训教育的正规机构,学校自1992年开创教育培训以来不断发展壮大,现开设电脑培训、会计培训、英语培训、手机维修培训等多个培训体系.
向TA提问
展开全部
自实现树形菜单
使用html+css+js实现了树形菜单,具体的实现思路如下:
html中定义包含树形菜单的容器节点
规划好树形菜单的样式以及图标
使用js构建html结构以及绑定事件,实现树形菜单的点击折叠
实现效果图如下:
核心的实现是构建html结构,组织树状结构的数据,使用递归构建树,在本次实现中html的组织有两种形式,具体如下所述:
- 子菜单和父菜单逻辑上形成父子关系,结构上是分离的
- 子菜单和父菜单逻辑以及机构上都是父子关系
在刚一开始,我实际上是实现的第一种形式的,该形式的html结构体现如下:
<ul>
<li>菜单1</li>
<ul>
<li>子菜单1</li>
<li>子菜单2</li>
</ul>
</ul>1234567

后来又补充了下一种形式的(这种更常见),该形式的html结构体现如下:
<ul>
<li>
<span>菜单1</span>
<ul>
<li>子菜单1</li>
<li>子菜单2</li>
</ul>
</li>
</ul>123456789

递归形成树形菜单结构的代码如下(第二种形式):
tool.menuView = function(parentNode, menu) {
if (!parentNode || parentNode.nodeType !== 1 || !Array.isArray(menu)) return;
for (let i = 0; i < menu.length; i++) {
let option = menu[i], name = option.name,
children = option.children,
liNode = tool.createElement('li');
tool.append(parentNode, liNode);
if (children && children.length > 0) {
let ulNode = tool.createElement('ul');
tool.menuView(ulNode, children);
let [iNode, spanNode] = tool.createElement(['i', 'span'])
spanNode.innerText = name;
iNode.className = 'fa fa-play';
tool.append([liNode, parentNode, liNode], [[iNode, spanNode], [liNode], [ulNode]]);
} else {
liNode.innerText = name;
}
}
};12345678910111213141516171819

需要传入的数据形式如下:
data = [
{
name: '菜单1',
children: [
{
name: '子菜单1'
},
{
name: '子菜单2
}
]
}
];12345678910111213

构建树形结构是关键的一步,之后就是对交互的处理,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式