jsTree使用記錄實例
1. ajax請求生成jsTree
[javascript] view plain copy
<span style="font-size:14px;"><script>
var r = []; // 權限樹中被選中的葉子節(jié)點
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過來了,這是一棵帶復選框的樹。頁面有地方點擊之后觸發(fā)showPermitTree(id)函數(shù),發(fā)送ajax請求給后臺,項目使用的是springmvc框架,后臺返回JSONArray.toString。
2. jsTree change事件
上面代碼中含change事件。把所有選中的節(jié)點的id放到一個數(shù)組中。
頁面上有個按鈕,點擊后觸發(fā)saveTree函數(shù),發(fā)請求給后臺,把選中的節(jié)點的id發(fā)給后臺。
3.jsTree自定義contextmenu
[javascript] view plain copy
<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自帶的菜單,并自定義菜單

以上就是本文的全部內容,希望對大家有所幫助,同時也希望多多支持腳本之家!
- jstree創(chuàng)建無限分級樹的方法【基于ajax動態(tài)創(chuàng)建子節(jié)點】
- 基于BootStrap Metronic開發(fā)框架經(jīng)驗小結【二】列表分頁處理和插件JSTree的使用
- jsTree 基于JQuery的排序節(jié)點 Bug
- jquery下jstree簡單應用 - v1.0
- jquery.jstree 增加節(jié)點的雙擊事件代碼
- 基于jsTree的無限級樹JSON數(shù)據(jù)的轉換代碼
- JQery jstree 大數(shù)據(jù)量問題解決方法
- jsTree樹控件(基于jQuery, 超強悍)[推薦]
- jstree的簡單實例
相關文章
微信小程序踩坑記錄之解決tabBar.list[3].selectedIconPath大小超過40kb
這篇文章主要給大家介紹了關于微信小程序踩坑記錄之解決tabBar.list[3].selectedIconPath大小超過40kb的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友參考借鑒,下面隨著小編來一起學習學習吧2018-07-07

