热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

bootstrap实现treeview,带复选框树结构(父子节点级联)

bootstrap的树结构插件,包括树结构显示复选框、复选框回显功能,在此记录一下实现过的功能,便于以后使用~使用方法:一、首先引用css和js,仅写自己使用的jquery-1.1

bootstrap的树结构插件,包括树结构显示复选框、复选框回显功能,在此记录一下实现过的功能,便于以后使用~

使用方法:

一、首先引用css和js,仅写自己使用的

jquery-1.11.3.min.js、bootstrap-3.3.7.css、bootstrap-3.3.7.js、bootstrap-treeview.js

不过看别的博客说是这样的区间范围:Bootstrap v3.3.4 (>= 3.0.0) jQuery v2.1.3 (>= 1.9.0)

参考地址:https://blog.csdn.net/security_2015/article/details/79527313

   
    
    
    
    
    

二、js和html分开写,先写html页面内容

html:

1.定义div,设置树结构
       

定义属性,来实现父子级联和全选全不选

var nodeCheckedSilent = false;
var nodeUncheckedSilent = false;

function init(){
    loadMenuTree();//加载树结构
}

3.加载的树结构

function loadMenuTree(){
    $(‘#tree’).treeview({
        data : getTree(), // 实现树形结构的展示树形规则,后续展示实体类属性内容
        levels : 2,
        expandIcon : “glyphicon glyphicon-chevron-right”,//图案可以自己选择
        collapseIcon : “glyphicon glyphicon-chevron-down”,
        emptyIcon:”glyphicon glyphicon-th-large”
,//设置没有子节点的菜单前的图标
        showBorder : false,
        showTags : true,
        highlightSelected : false,
        highlightSearchResults : true,
        selectedBackColor : false,
        showIcon : true,
        multiSelect : 1,
        showCheckbox: 1,//复选框设置,也可以是true
        onNodeChecked: function(event, data) {
            if(nodeCheckedSilent){
                return;
            }
            nodeCheckedSilent = true;//开始父子节点级联全选全不选
            checkAllParent(data);
            checkAllSon(data);
            nodeCheckedSilent = false;

        },
        onNodeUnchecked : function(event, data) {
            if(nodeUncheckedSilent){
                return;
            }
            nodeUncheckedSilent = true;//开始父子节点级联全选全不选
            uncheckAllParent(data);
            uncheckAllSon(data);
            nodeUncheckedSilent = false;

        
        }

    });
}

4.获取树结构内容,以便于展示树结构,树结构展示的内容

function getTree() {
    var menus;
    $.ajax({
        async : false,
        url : “获取的树结构的内容”,//自己定义的接口
        type : “post”,
        contentType : “application/json;charset=UTF-8”,
        dataType : “json”,
        data : null,
        error : function(data) {
            alert(data.toString());
        },
        success : function(data) {
            menus = data;
        },
        error:function(data){
            alert(“加载失败”);
        }
    });
    return menus;
}

5.实现父子节点级联和全选全不选:

//选中全部父节点
function checkAllParent(data){
    $(‘#tree’).treeview(‘checkNode’,data.nodeId,{silent:true});
    var parentNode = $(‘#tree’).treeview(‘getParent’,data.nodeId);
    if(!(“nodeId” in parentNode)){
        return;
    }else{
        checkAllParent(parentNode);
    }
}
//取消全部父节点
function uncheckAllParent(data){
    $(‘#tree’).treeview(‘uncheckNode’,data.nodeId,{silent:true});
    var siblings = $(‘#tree’).treeview(‘getSiblings’, data.nodeId);
    var parentNode = $(‘#tree’).treeview(‘getParent’,data.nodeId);
    if(!(“nodeId” in parentNode)) {
        return;
    }
    var isAllUnchecked = true;  //是否全部没选中
    for(var i in siblings){
        if(siblings[i].state.checked){
            isAllUnchecked=false;
            break;
        }
    }
    if(isAllUnchecked){
        uncheckAllParent(parentNode);
    }
 
}
 
//级联选中所有子节点
function checkAllSon(data){
    $(‘#tree’).treeview(‘checkNode’,data.nodeId,{silent:true});
    if(data.nodes!=null&&data.nodes.length>0){
        for(var i in data.nodes){
            checkAllSon(data.nodes[i]);
        }
    }
}
//级联取消所有子节点
function uncheckAllSon(data){
    $(‘#tree’).treeview(‘uncheckNode’,data.nodeId,{silent:true});
    if(data.nodes!=null&&data.nodes.length>0){
        for(var i in data.nodes){
            uncheckAllSon(data.nodes[i]);
        }
    }
}

三、下面是树结构要求实现的实体类关系:

    private String id;
    private String parentId;
    private String text;
    private String level;
    private String href;
    
    private String rootId;
    
    private List nodes = new ArrayList();

如果要加入回显选中内容,需要加上:

/**
     * 用于回显(默认选中)
     */
    private static Map stateMap = new HashMap();

    static {
        stateMap.put(“checked”, true);
    }

    private Map state;

 

普通的是这些,不过要实现树结构,复选框回显,应该加上一个属性:state,前端的树结构加载的时候会看此节点是否有state:{checked:true}属性,有的话就会自己成选中状态,这样在加载树结构的时候,知道这个节点是选中状态,直接给setstate();就可以给他属性了;

需要注意的是,给树结构选中的属性是在加载树结构的时候,就给他setstate()属性,不需要请求两次树结构内容

《bootstrap实现treeview,带复选框树结构(父子节点级联)》

这样在前端显示出来的界面就是已经有的节点是选中状态了:

《bootstrap实现treeview,带复选框树结构(父子节点级联)》

 

树结构前面显示的图标是可以进行变化的,

《bootstrap实现treeview,带复选框树结构(父子节点级联)》

放链接,图标:https://v3.bootcss.com/components/

更改地方,在js中:

《bootstrap实现treeview,带复选框树结构(父子节点级联)》

文章参考:

父子节点全选全不选参考文章:https://blog.csdn.net/jiang_2992/article/details/62042028

修改图标:https://v3.bootcss.com/components/

自己学习参考文章:

https://blog.csdn.net/u011550710/article/details/79240368

https://www.cnblogs.com/chenhtblog/p/8342534.html

https://blog.csdn.net/u010028869/article/details/44087699

先这些,后续再补充吧~


推荐阅读
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 例如控件ID为user.id使用$(#user.id)不能得到正确的结果必须使用\\转义即$(#user\\.id)转载于:https:www.cnblogs.comrch ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
author-avatar
茶香未散尽_385_312
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有