Bootstrap-treeview动态加载子节点

导读:本篇文章讲解 Bootstrap-treeview动态加载子节点,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1、引入Bootstrap-treeview的js和css

bootstrap-treeview.js
bootstrap-treeview.css

2、修改bootstrap-treeview.js源码

2.1、在var Tree = function (element, options)方法的return中添加如下代码:

// 添加节点方法
addNode: $.proxy(this.addNode, this),
// 删除节点方法
deleteNode: $.proxy(this.deleteNode, this),
deleteChildrenNode: $.proxy(this.deleteChildrenNode, this),

2.2、在var Tree = function (element, options)方法下面新增添加和删除的方法,代码如下:

// 给节点添加子节点
	Tree.prototype.addNode = function (identifiers, options) {
	    this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
	            this.setAddNode(node, options);
	    }, this));
 
	    this.setInitialStates({ nodes: this.tree }, 0);
	    this.render();
	};
 
	//添加子节点
	Tree.prototype.setAddNode = function (node, options) {
        /*若当前要插入子节点的父节点没有任何子节点,则将[]赋给父节点,
	      否则node.nodes会出现undefined的错误*/
	    if (node.nodes == null) {
	    	node.nodes = [];
	    }
	    if (options.node) {
	        node.nodes.push(options.node);
	    }
	};
	/**
	 * 删除节点,若是根节点不能删除
	 * 获取节点的父节点,
	 * 根据Id删除父节点nodes集合中的自己
	 * 刷新父节点
	 * @param identifiers
	 * @param options
	 */
	Tree.prototype.deleteNode = function (identifiers, options) {
	    this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
	        var parentNode = this.getParent(node);
	        if(parentNode && parentNode.nodes != null ){
	            for(var i = parentNode.nodes.length-1; i >= 0; i--){
	                if(parentNode.nodes[i].nodeId == node.nodeId){
	                    parentNode.nodes.splice(i, 1);
	                }
	            }
	            this.setInitialStates({ nodes: this.tree }, 0);
	            this.render();
	        }else{
	            console.log('根节点不能删除');
	        }
	    }, this));
	};
	/**
	 * 删除子节点
	 * @param node
	 * @param options
	 */
	Tree.prototype.deleteChildrenNode = function (identifiers, options) {
	    this.forEachIdentifier(identifiers, options, $.proxy(function (node, options) {
	        if ( node.nodes != null){
	            node.nodes = null;
	            this.setInitialStates({ nodes: this.tree }, 0);
	            this.render();
	        }
	    }, this));
	};

3、调用添加和删除子节点的方法

//删除当前节点下的所有子节点
$("#itemtree").treeview("deleteChildrenNode", id);	
//添加子节点
var addNodes = new Array();
addNodes[0] = id;
addNodes[1] = {node: {text: "新加的菜单", href: "001005" }};
$("#itemtree").treeview("addNode", addNodes);
//当然也可以写成这样
$("#itemtree").treeview("addNode", [id,{node: {text: "新加的菜单", href: "001005" }}]);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/90999.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!