栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

JS操作三级树形结构展开与折叠

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JS操作三级树形结构展开与折叠

今天开发后台商品分类项目时,要求用树形结构展现商品的分类结构,最深有三个层级。在HTML文档设计上使用Table结构,每个分类项目放在一个Tr中,二级、三级标记相对上级进行缩进;在视觉上产生分级的效果;在图标文件上绑定点击事件getList并传入该分类的ID。

根据视图事件操作分为四种类型:

 1. 展开第一级时,显示第二级条目;
 2. 展开第二级时,显示第三级条目;
 3. 关闭第二级时,隐藏第三级条目;
 4. 关闭第一级时,隐藏第二级、第三级条目;

将1、2、3、4共同点提取出来就是:在对本级进行折叠、展开操作时。相应的次级条目就会产生相应的显隐变化。于是可以在HTML文档的渲染中可以按照这样的规律渲染树形结构:

 1. 在本级的折叠/展开图标上绑定事件并将本级的ID传入;
    
 
    
 2. 将本级的次级条目设置 class="tree_{$vo.id}";
    
 ...
    
 3. 真对第四种操作情况在关闭第二级的同时关闭第三级,
    可以为第三级设置 id="tree_{$vo.id}";
    
 ...
    

HTML:


 {volist name='data' id='vo'}
 
 {if condition='$vo.son'} {volist name='$vo.son' id='v'}
 
 {if condition='$v.son' id='m'} {volist name='$v.son' id='m'}
 
 {/volist} {/if} {/volist} {/if} {/volist}
    
{:lang('分类名称')} {:lang('翻译状态')} {:lang('操作')}
{$vo.name} [{$vo.cn_name}] ({$vo.id}) FR DE EN JP KO CN AR IT PO SP RU {:lang('编辑')} {:lang('添加二级分类')} {:lang('删除')}

JS:

//折叠、展开子分类 
function getList(id) {
    var _img = event.target,
 _icon = $(".cat_" + id),
 _tr = $('tr[class="tree_' + id + '"]'),
 __tr = $('tr[id^="tree_' + id + '"]');

    if (_tr.is(':hidden')) {
 _img.src = _img.src.replace(//1/, '/2');
 _tr.show();
    } else {
 _img.src = _img.src.replace(//2/, '/1');
 _icon.html('');
 _tr.hide();
 __tr.hide();
    }
}

总结:
其中我感到有处神来之笔就是在关闭顶级时将下级的图标初始化到折叠状态: $(".cat_" + id).html('');。通过这个案例使用ID关联自己下级的操作,并且可以让自己的代码功能实现的更优雅,真的是一个不错的选择;本案例也就只限三级,如果更深层级的扩展大家可以沿着这个方向进行扩展!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/247052.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号