浅析使用BootStrap TreeView插件实现灵活配置快递模板


Posted in Javascript onNovember 28, 2016

bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件。该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树、列表树等等。

开发条件:

安装bootstrap-treeview插件,具体操作见:

bootstrap-treeview

实现功能:

1.一个模板可指定子模板(包含多个地区、价格等)

2.编辑子模板地区时,动态改变tree的地区(其他子模板选中的地区disabled,此模板之前选中的地区默认选中)

3.tree选择时,父级和子集的联动(如父级选中子集全部选中,取消一个子集的时候,父级也取消)

4.维护子模板数据(展示选中的地区格式 如(安徽、北京(昌平 回龙观)) 存储选中节点)

其他说明

数据源格式:[{text:'展示名称1',nodes:[{text:'子级'}]},{text:'展示名称2'}]

bootstrap-trview会动态的为数据源添加nodeId,parentId这两个属性(很重要的属性),可自定义添加其他属性用来标记当前节点

编辑过程中维护的数据

数组对象templates包含:

1.模板的名称

2.每个子模板对应的 价格 件数 排序

3.子模板的地区Id、节点id、展示名称

实现上述数据需要维护的数组和对象

var templates = []; //保存最终储存的数据
var selectedNodeId = []; //用来存储单个模板选择的nodeId 用于展示
var editingTemplate = null; //用于标记正在处理的是第几个地区模板
var selectedAreaId = []; //保存当前选择的地区
var selectedAreaName = []; //保存当前选中的地区名称用于展示
var defaultData = [];//数据源

实现功能一

一个模板指定多个子模板

主要是维护templates[]数组 push进入多个template即可 下面会详细讲解如何维护template

实现功能二(动态修改tree)

原理:通过维护的templates和editingTemplate 拿到当前编辑的子模板数据和其他子模板数据,将当前模板的node默认选中,其他的数据置为disabled

编辑子模板

uncheckAll方法:$('#tree').treeview('uncheckAll', { silent: true });

disAbled方法:$('#tree').treeview('disableNode', [ nodeId, { silent: true } ]);

默认选中的方法$('#tree').treeview('checkNode', [ template.nodeIds[i], { silent: true } ]);

实现功能三:父级和子级的联动(主要操作在点击选中和取消选中上面 来分析两种情况)

第一种 选中

1.选择父节点 将子节点全部选中

根据父节点返回的nodes得到所有的子节点 并且将子节点全部选中

选中的方法$('#tree').treeview('checkNode', [ nodeId, { silent: true } ]);

可以封装为一个方法selectAllChildren()

2.如果选中的为子节点

判断父节点中的子节点是否全部选中如果全部选中则将父节点选中

第二种 取消

1.选中的为父节点,将所有的子节点取消选中

取消选中的方法$('#tree').treeview('uncheckNode', [ nodeId, { silent: true } ]);

2选中的为子节点,判断父节点中的子节点是否选中 如果选中 则取消选中

判断是否选中的方法

$('#tree').treeview('selectNode', [ nodeId, { silent: true } ]);

根据获取到元素获取是否选中

实现功能四(维护template数据)

1.正在编辑的editingTemplate

2.当前层级选中的所有selectedNodeId

3.展示需要的字符串数组selectedNodeName

3.存储字符串数组selectedAreaId对应数据库中的areaId

4.将上面的三个数组存入template,并将template push进入templates

逻辑

1.获取到所有的被选中的元素

2.遍历所有的元素 判断当前节点是否有nodes(即子元素),如果有则直接操作,并改变index,将其子元素全部跳过,将节点名称保存进areaNames,如"安徽"

3.遍历所有的元素 如果没有子元素,取出父级元素如"北京(",将node元素添加至后面,如"北京(昌平区",判断下一个元素的父节点是否发生改变,如果发生改变则结束维护字符串为"北京(昌平区)",并将其添加至areaNames,继续遍历下一个节点

4.其他三个数组在遍历的同时维护
实现结果展示:

1.主页面展示:

浅析使用BootStrap TreeView插件实现灵活配置快递模板

2.tree展示:

浅析使用BootStrap TreeView插件实现灵活配置快递模板

小结

本文提供简单的实现方案思路,具体的代码根据业务实现,不足之处不能动态处理数据源,优点bootstrap开放的api接口较多,可自定义实现。

以上所述是小编给大家介绍的使用BootStrap TreeView插件实现灵活配置快递模板,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery对象和DOM对象的相互转化实现代码
Mar 02 Javascript
jquery实现的一个简单进度条效果实例
May 12 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
Aug 24 Javascript
javascript正则表达式之search()用法实例
Jan 19 Javascript
javascript密码强度校验代码(两种方法)
Aug 10 Javascript
JQuery 的跨域方法推荐_可跨任何网站
May 18 Javascript
JavaScript 数组some()和filter()的用法及区别
May 20 Javascript
jQuery插件实现文件上传功能(支持拖拽)
Aug 27 Javascript
vue中element组件样式修改无效的解决方法
Feb 03 Javascript
在NPM发布自己造的轮子的方法步骤
Mar 09 Javascript
JavaScript进阶(一)变量声明提升实例分析
May 09 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
Oct 29 Javascript
基于JavaScript实现右键菜单和拖拽功能
Nov 28 #Javascript
JavaScript实现图片懒加载(Lazyload)
Nov 28 #Javascript
最常见的左侧分类菜单栏jQuery实现代码
Nov 28 #Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 #Javascript
String字符串截取的四种方式总结
Nov 28 #Javascript
localStorage实现便签小程序
Nov 28 #Javascript
JavaScript实现邮箱地址自动匹配功能代码
Nov 28 #Javascript
You might like
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
PHP中的超全局变量
2006/10/09 PHP
php数组删除元素示例
2014/03/21 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
python中执行shell的两种方法总结
2017/01/10 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
银行职业规划书范文
2013/12/28 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
防汛通知
2015/04/25 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
Flink 侧流输出源码示例解析
2022/09/23 Servers