BootStrap实现树形目录组件代码详解

产品添加页面,需要选择车型。在bootStrap的modal上弹出子modal来使用。

车型一共有4级目录。要使用目录树。

然后分活动和商品两种,需要能够通过不通参数来调用该组件。

车型品牌要使用字母导航。

技术实现

数据都是后端传json过来,我们ajax获取然后操作。

由于车型总数据有几万条以上,不可能一次性请求过来。这里我们使用异步的方式,每点击一次目录节点,加载它的下一级。

这里我们用两个参数来控制活动和商品的不同加载。_showPrice和opened

后端传过来的第一级数据是车型品牌,其中有首字母的字段。字母导航的初始化,就是把这个数据用firstWord属性来排序,然后忽略掉其他首字母相同的元素。

对于活动类型,需要返回所勾选的最低一级的数据。(勾选奥迪和奥迪A6,则只返回A6的意思),这里用了整整4层循环。不过它是根据是否有checked来遍历的,速度不慢。

/**

*Createdbynuenfengon2016/5/23.

*车型选择组件

*参数:

*showPrice是否要输入价格(不输入价格的从品牌开始就有选项框,没有全选功能)

*params外部传入的对象

*callback回调函数

*/

(function(){

varuriCarBrand=global.url.carBrandList;

//varuri=uriCarBrand.url;

varopened=false;//当前页面是否打开过本组件

var_callback;//回调函数

varrequestParams;//请求时要使用的参数

var_showPrice;//是否要输入价格

varlastShowPrice;//前一次打开状态

varcharNavArr;//字母导航数组

functionCarTree(showPrice,params,callback){

//没打开过,初始化;打开过,直接显示modal

requestParams=params;

_showPrice=showPrice;

_callback=callback;

if(!opened||lastShowPrice!=showPrice){

this.init();

opened=true;

lastShowPrice=showPrice;

}else{

$('#zc-sub-modal').modal('show');

}

CarTree.prototype.init=function(){

msjcTools.addSubModal();

//设置大模态框

$('#zc-sub-modal').addClass("bs-example-modal-lg");

$('#zc-sub-modal.modal-dialog').addClass("modal-lg");

varstr='

str+='

str+="

varobjId='cb_0';

varcarBrandId=0;

loadSubMenu(objId,carBrandId,1);//1表示第一次加载,用于加载成功后判断时候要初始化字母导航

$('#zc-sub-modal-body').html(str);

$('#zc-sub-modal').modal({

keyboard:false,

show:true

});

//点击保存事件

$('#zc-sub-modal.modal-footer.btn.btn-primary').unbind().bind("click",function(){

save();

//$("#resourceId").find("input[type=checkbox]").unbind().bind("click",function(){

//if($(this).is(':checked')==true){//选中则其上层节点全部展开并选中

////上级选中

//$(this).parents("li").each(function(){

//$(this).find("input[type=checkbox]:first").attr("checked",true)

//});

//}else{

////下级取消选中

//$(this).siblings("ul").find("input[type=checkbox]").each(function(){

//$(this).removeAttr("checked");

//}

//隐藏子窗口后保持父窗口的滚动

$("#zc-sub-modal").on("hidden.bs.modal",function(){

$('body').addClass('modal-open')

CarTree.prototype.empty=function(){

opened=false;

console.log('emptyme');

//加载子菜单

varloadSubMenu=function(objId,carBrandId,times){

requestParams.brandId=carBrandId;

executeAjax(global.url.carBrandList,requestParams,function(data){

//给data风骚地排个序

data.sort(keysrt("firstWord"));

varmenuHtml="

for(varindexindata){

varmenu=data[index];

menuHtml+='

//带价格的树

if(_showPrice){

//最后一级,添加选项框

if(menu.level>3){

menuHtml+='';

menuHtml+=''+menu.name+'';

//最后一级,添加输入框

if(menu.level==4){

}else{//不带价格的树

menuHtml+="

$('#'+objId).append(menuHtml);

$('#'+objId).attr('data-load','loaded');

//汽车类型第一级加载完成后,初始化字符导航

charNavArr=[];

varfwdLast='';//上一次的首字母

for(variindata){

varcobjTemp={};

if(fwdLast!=data[i].firstWord){

fwdLast=data[i].firstWord;

cobjTemp.firstWord=fwdLast;

cobjTemp.targetId='cb_'+data[i].carBrandId;

charNavArr.push(cobjTemp);

if(times==1){

initCharNav();

$('.charNavSaveBtn').unbind().bind("click",function(){

//此处是风骚的数组对象排序

varkeysrt=function(propertyName){

returnfunction(object1,object2){

varvalue1=object1[propertyName];

varvalue2=object2[propertyName];

if(value2

return1;

elseif(value2>value1){

return-;

else{

return;

//保存事件

varsave=function(){

//确认后,执行回调函数

varres=getPriceResult();

if(res.status){

_callback(res.data);

alert(res.error);

_callback(getNopriceResult());

//返回数据,然后隐藏

$('#zc-sub-modal').modal('hide');

//设置字符导航初始化

varinitCharNav=function(){

varcharNavHtml='

for(variincharNavArr){

charNavHtml+='

charNavHtml+='保存';

$('#zc-sub-modal').append(charNavHtml);

$('.modalGoTop').on('click',function(e){

$('#zc-sub-modal').animate({scrollTop:},);

//统计带价格的返回数据

vargetPriceResult=function(){

varresult={

status:true,

data:[],

error:''

};

varliTemp;

varobjTemp;

$('.treeview-grayinput:checkbox:checked').each(function(i){

liTemp=$(this).parent('li');

objTemp={};

objTemp.carBrandId=liTemp.attr('value');

objTemp.brand=liTemp.attr('brand');

objTemp.carBrandName=liTemp.find('span').text();

objTemp.unitPrice=liTemp.find('input:text').val();

//如果价格没有输入,返回保存失败,并返回没有输入的carBrandName

if(objTemp.unitPrice==''){

result.status=false;

result.error='请输入'+objTemp.carBrandName+'的价格!';

returnresult;

result.data.push(objTemp);

//统计不带价格的返回数据

vargetNopriceResult=function(){

varresult=[];

varflag1;

varflag2;

varflag3;

varflag4;

varlevelName;

//遍历4层

$('#cb_').children().children('li').children('input:checkbox').each(function(i){

if($(this).is(':checked')){

flag=true;

flag=false;

$(this).parent().children().children('li').children('input:checkbox').each(function(i){

//获取第二级的名字,给第三级使用

level2Name=liTemp.children('span').text();

$(this).parent().children().children('li').children('input:checkbox').each(function(i3){

flag1=false;

flag2=false;

flag3=true;

flag3=false;

$(this).parent().children().children('li').children('input:checkbox').each(function(i4){

flag4=true;

flag4=false;

if(flag4){

//objTemp.carBrandName=liTemp.children('span').text();

objTemp.carBrandName=objTemp.brand+''+liTemp.children('span').text();

result.push(objTemp);

if(flag){

objTemp.carBrandName=objTemp.brand+''+levelName+''+liTemp.children('span').text();

if(flag2){

//liTemp=$(this).parent('li');

//objTemp.carBrandName=objTemp.brand+liTemp.children('span').text();

if(flag1){

objTemp.carBrandName=liTemp.children('span').text();

//给目录树绑定点击事件

$(document).on('click','#resourceIdli',function(e){

e.stopPropagation();

if($(this).attr('open')){

$(this).removeAttr('open');

$(this).children('ul').hide();

$(this).attr('open','opened');

$(this).children('ul').show();

varobjId=$(this).attr('id');

varcarBrandId=$(this).attr('value');

//加载过的不执行

if($(this).attr('data-load')){

loadSubMenu(objId,carBrandId);

//点击多选框时候不下拉

$(document).on('click','input[type="checkbox"]',function(e){

THE END
1.jQuery树菜单插件jQuery可选择多级树菜单插件,jQuery支持ajax树菜单插件,jQuery文本框多级下拉树菜单,jQuery二级树菜单插件手风琴,jQuery可拖拽树结构菜单,经典jQuery树菜单插件,jQuery树菜单插件,Bootstrap风格treeview多级树菜单插件,Bootstrap实现多级树菜单JQuery插件。下载jQuery树菜单https://www.bootstrapmb.com/tag/shucaidan
2.菜单与导航·BootstrapMetroUICSS中文版Bootstrap Metro UI CSS 中文版 0.15.8.12 首页 脚手架 基本样式 组件 源码 菜单案例下拉菜单 菜单名称 菜单名称 菜单名称 菜单名称 菜单名称 菜单的切换,显示或隐藏下拉菜单的链接,这样的互动功能需要使用Javascript插件dropdown配合。 导航栏 项目名称 菜单名称 菜单名称 2 菜单名称 3 菜单名称 4 你可以https://www.bootcss.com/p/metro-ui-css/menus.html
3.bootstrapjquery菜单树mob64ca12ef9b85的技术博客bootstrap jquery 菜单树 作为一名经验丰富的开发者,我将向您介绍如何实现一个“bootstrap jquery 菜单树”。这将帮助您快速掌握实现过程,并为您提供一个清晰的指导。 实现流程 以下是实现“bootstrap jquery 菜单树”的步骤: 详细步骤 1. 引入Bootstrap和jQuery库https://blog.51cto.com/u_16213428/11589303
4.bootstrap树形组件bootstrap树形目录在工作中经常用的树形菜单,bootstrap树形菜单//引用bootstrap-treeview.js //引用树形菜单的数据 $(function() { $('#treeview4').treeview({ color: "#428bca", //树形菜单的颜色 data: defaultData //树形菜单的数据 2.3K20 前端|BootStrap 布局组件 部分组件的使用 1.Bootstrap 图标(Glyphicons)https://cloud.tencent.com/developer/information/bootstrap%E6%A0%91%E5%BD%A2%E7%BB%84%E4%BB%B6?from=21354&from_column=21354
5.bootstrap实现树形菜单显示,联动数据bootstrap实现树形菜单显示,联动数据 JS组件系列——Bootstrap 树控件使用经验分享 前言:很多时候我们在项目中需要用到树,有些树仅仅是展示层级关系,有些树是为了展示和编辑层级关系,还有些树是为了选中项然后其他地方调用选中项。不管怎么样,树控件都是很多项目里面不可或缺的组件之一。今天,博主打算结合自己的使用https://www.pianshen.com/article/7567707849/
6.bootstrap树形下拉框下拉框树形菜单(修改版)jquery,bootstrap, treeview可搜索下拉树形,设置了滚动条, 内容包括后台及实体类,页面,表结构及数据、说明,运行图片。 上传者:tzming1212时间:2018-09-17 bootstrap树形下拉框 下拉框树形菜单 bootstrap树控件使用bootstrap-treeview.js树形控件在下拉框select中显示,带树形的下拉框 https://www.iteye.com/resource/weixin_45026040-11229340
7.jQuerybootstrap响应式树形菜单代码本应用使用了bootstrap的treeview做的树结构,若要使用数据库中的数据,可通过Ajax请求,向后台发送请求,成功获取数据后(json数据)。 相关标签 树形导航bootstrap树形菜单树形菜单隐藏显示响应性响应式响应式门户响应式页面响应式论坛jqueryjquery导航菜单jquery菜单jquery图表jquery相关积累jquery 分页简易bootstrapjqueryjquery https://www.17sucai.com/pins/11586.html
8.bootstrap树形下拉框下拉框树形菜单(花了一小时修改过的)bootstrap树控件使用bootstrap-treeview.js树形控件在下拉框select中显示,带树形的下拉框 Bootstrap框架建立树形菜单(Tree)的实例代码 浏览:64 5星 · 资源好评率100% 这里的Tree指的是树形菜单,这篇文章通过一个实例来讲解一下,在Bootstrap框架下怎么去建立一个树形菜单。 前提:先添加Bootstrap和JQ的引用 <lihttps://download.csdn.net/download/qq_36784544/11229346
9.BootStrapJstree树形菜单的增删改查的实现源码好了这就完成了,当然这里面的树也是可以自定义图标,自定义按钮等操作,具体可以自己去探究。 以上所述是小编给大家介绍的BootStrap Jstree 树形菜单的增删改查的实现源码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对创新互联网站的支持!http://shouzuofang.com/article/gogeod.html
10.bootstrap树形下拉框下拉框树形菜单开发实例源码下载bootstrap树控件使用bootstrap-treeview.js树形控件在下拉框select中显示,带树形的下拉框 【实例截图】 【核心代码】 treeview-select └── treeview-select ├── css │ ├── bootstrap.min.css │ ├── bootstrap-treeview.css │ ├── createuser.css https://www.haolizi.net/example/view_134451.html
11.bootstraptreeview怎么实现多级树形菜单=web开发树形菜单是我们经常会用到的一种菜单展现方式,这里我推荐bootstrap-treeview,它是一款效果非常酷的基于bootstrap的jQuery多级列表树插件。该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树、列表树等。 前端页面的编写,比较简单,故简略描述,我们着重将后端如何按照要求组织返回所需的https://www.yisu.com/jc/162494.html
12.bootstrap有树状菜单吗Bootstrap教程有。bootstrap-treeview.js是一款强大的树菜单插件。它可一次性加载数据,也可异步加载。支持Checkbox,selectable,节点级联等,而且还能承载大数据。https://www.php.cn/faq/425996.html
13.SeaJS组件库2013.3.20 修改artdialog,使其支持data-toggle形式。增加bootstrap和google-code-prettify组件 2013.3.25 增加组件开发注意事项文档。增加slidesjs组件。 2013.3.26 增加小百科图片上传组件。 2013.3.27 增加upload图片上传组件,更新fixed、edittable组件。 2013.3.28 增加transport模块 http://panxuepeng.github.io/seajslib
14.jQuery完整的多级jQuery-Easyui蔬菜单实例,可直接运行,四级树菜单。点赞(0) 踩踩(0) 反馈 所需:1 积分 电信网络下载 yourwonder 2020-06-01 14:39:39 评论 感谢分享。dulhunty 2019-06-12 13:28:32 评论 资源一般般,不是我想要的rabbit0708 2019-02-13 17:04:57 评论 very good感谢楼主啊!https://www.coder100.com/index/index/content/id/564405
15.如何在进化树上显示bootstrap值?clove_bee 医疗行业从业者 已经搞定,谢谢。原因是M值没有设定。2006-07-20IP上海上海 收藏回复点赞 https://www.dxy.cn/bbs/newweb/pc/post/6259004
16.jQuery+Bootstrap手写树形菜单手写树形结构菜单并实现点击的交互效果 <!DOCTYPE html><!--Bootstrap.css -->*{ margin: 0; padding: 0; } html{ padding: 20px; } .row{ margin: 20px 0; } .row label{ line-height: 30px; margin: 0; text-align: right; font-weight: normal; } .text-left { text-align: left; } .https://www.jianshu.com/p/83c0db044371
17.如何用MEGA和Clustalx构建进化树解析.ppt(1) phylogeny→UPGMA (2)用Bootstrap构建进化树,MEGA的主要功能就是做Bootstrap验证的进化树分析,Bootstrap验证是对进化树进行统计验证的一种方法,可以作为进化树可靠性的一个度量。各种算法虽然不同,但是操作方法基本一致。进化树的构建是一个统计学问题。我们所构建出来的进化树只是对真实的进化关系的评估或者模拟https://max.book118.com/html/2016/0714/48160353.shtm