jsTree使用记录

1. ajax请求生成jsTree

<span style="font-size:14px;"><script>
	
		var r = [];	// 权限树中被选中的叶子节点
		var currentGroupId;

		function showPermitTree(id) {
			currentGroupId = id;
			$.ajax({
				data : "currentGroupId=" + id,
				type : "POST",
				//dataType : 'json',
				url : "/test/permittree",
				error : function(data) {
					alert("出错了!!:" + data);
				},
				success : function(data) {
					//alert("success:" + data);
					createPermitTree(data);
				}
			});
			
			${'buttonDiv'}.style.display="";
		}

		function createPermitTree(datastr) {
			datastr = eval("" + datastr + "");
			$('#permitTree').jstree({
				'plugins' : [ "wholerow", "checkbox", "types" ],
				'core' : {
					"themes" : {
						"responsive" : false
					},
					'data' : datastr
				},
				"types" : {
					"default" : {
						"icon" : "fa fa-folder icon-state-warning icon-lg"
					},
					"file" : {
						"icon" : "fa fa-file icon-state-warning icon-lg"
					}
				}
			});
		}

		// listen for event
		$('#permitTree').on('changed.jstree', function(e, data) {
			r = [];
			var i, j;
			for (i = 0, j = data.selected.length; i < j; i++) {
				var node = data.instance.get_node(data.selected[i]);
				if (data.instance.is_leaf(node)) {
					r.push(node.id);
				}
			}
			//alert('Selected: ' + r.join('@@'));
		})
		
		function saveTree() {
			$.ajax({
				data : {'currentGroupId' : currentGroupId,
						'selectedNodes' : r.join('@@')},
				type : "POST",
				//dataType : 'json',
				url : "/test/savetree",
				error : function(data) {
					alert("出错了!!:" + data);
				},
				success : function(data) {
					alert("保存成功!");
				}
			});
		}
		
	</script></span><span style="font-size:24px;">
</span>


直接把测试项目中一段代码copy过来了,这是一棵带复选框的树。页面有地方点击之后触发showPermitTree(id)函数,发送ajax请求给后台,项目使用的是springmvc框架,后台返回JSONArray.toString。


2. jsTree change事件

上面代码中含change事件。把所有选中的节点的id放到一个数组中。

页面上有个按钮,点击后触发saveTree函数,发请求给后台,把选中的节点的id发给后台。


3.jsTree自定义contextmenu

<script>
$('#jstree').jstree({
    core : {
        check_callback : true,
        data : [
            { "id" : "1", "parent" : "#", "text" : "root" },
            { "id" : "2", "parent" : "1", "text" : "child 1" },
            { "id" : "3", "parent" : "1", "text" : "child 2" }
        ],
    },
    plugins : ["wholerow","contextmenu"],
    "contextmenu": {  
            "items": {  
                "create": null,  
                "rename": null,  
                "remove": null,  
                "ccp": null,  
                "add": {  
                    "label": "add",  
                    "action": function (obj) {
    					var inst = jQuery.jstree.reference(obj.reference);  
                    	var clickedNode = inst.get_node(obj.reference); 
    					alert("add operation--clickedNode's id is:" + clickedNode.id);
    				}  
                },  
                "delete": {  
                    "label": "delete",  
                    "action": function (obj) {
                		var inst = jQuery.jstree.reference(obj.reference);  
                    	var clickedNode = inst.get_node(obj.reference); 
    					alert("delete operation--clickedNode's id is:" + clickedNode.id);
                	}  
                }  
            }  
        } 
}).on("ready.jstree", function (e, data) {
  data.instance.open_all();
});
</script>	
这段代码使用jsTree的contextmenu plugin,去掉jsTree自带的菜单,并自定义菜单

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值