一般我们用jstree主要实现树的形成,并且夹杂的邮件增删重命名刷新的功能

下面是我在项目中的运用,采用的是异步加载

$('#sensor_ul').data('jstree', false).empty();//先销毁清空

function getSensors(){

$("#sensor_ul").jstree({

"core" : {

"animation" : 0,

"check_callback" : true,

"themes" : {

"theme" : "classic",

"dots" : true,

"icons" : true,

"stripes" : true

},

'data':{

'url':function(node){

if(node.id === '#'){//异步加载

return root+"/jsPlumb1/getDeviceTreeRoot";

}else{

return root+"/jsPlumb1/getDeviceTreeChild/"+node.id;

}

},

'data':function (node){

if(node.id === '#'){

return{

'id':node.id

}

}else{

return{

'id':node.original.id,

'a_attr':node.original.a_attr       自定义属性放在这里或者li_attr,让后台给你返回来

};

}

}

}

},

"types" : {

"#" : {

"max_children" : 1,

"max_depth" : 10000,

"valid_children" : []

},

"deviceTreeDatasource":{

"icon": "assets/tree/chart_organisation.png",

"valid_children" : ['deviceTreeDatapoint']

},

"deviceTreeDatapoint":{

"icon": "assets/tree/Electricity_Error.png",

"valid_children" : []

}

},

"checkbox" : {

"keep_selected_style" : false,

"real_checkboxes" : true

},

"plugins" : [

"state", "search",  "types", "wholerow","checkbox","contextmenu","search"

],

"contextmenu": {

"items": {

"create": null,

"ccp": null,

"remove": {

"label": "删除设备",

"icon": "assets/tree/action_delete.gif",

"action": function(data) {

layer.open({

content: '确定要删除此设备?删除后不可恢复。'

,btn: ['是', '取消']

,resize:false

,yes: function(index, layero){

layer.close(index);

var ref = $('#sensor_ul').jstree(true);//获得整个树

nodeidArr = ref.get_selected(); //获得所有选中节点,返回值为数组

$.ajax({

async: true,

type: 'post',

url:root+"/VirtualPoint/deleteVirtualUnit",

dataType: 'json',

data: {

nodeidArr:nodeidArr

},

success: function(data) {

//                 alert(typeof data.names);

if(data.names == null){

jQuery("#sensor_ul").jstree("refresh");

layer.msg("删除设备成功!",{icon:1,time:1500});

}else{

layer.msg(data.names+"设备删除失败!",{icon:5,time:1500});

}

}

});

},btn2: function(index, layero){

//按钮【按钮二】的回调

layer.close(index);

//return false 开启该代码可禁止点击该按钮关闭

},cancel: function(){

//右上角关闭回调

layer.close();

//return false 开启该代码可禁止点击该按钮关闭

}

})

}

},

"rename": {

"label": "重命名设备",

"icon": " assets/tree/edit.gif",

"action":function (data) {

var inst = $.jstree.reference(data.reference),

obj = inst.get_node(data.reference);

inst.edit(obj);

}

},

"refresh": {

"label": "刷新设备",

"icon": " assets/tree/arrow_refresh.png",

"action":function (data) {

jQuery("#sensor_ul").jstree("refresh");

}

},

}

}

});

$('#sensor_ul').on("rename_node.jstree",function(e,d){

var oldName = d.old;

var newName = d.text;

var nodeId = d.node.id;

var parentnodeId = d.node.parent;

var datapointId = d.node.a_attr.source;

$.ajax({

async: true,

type: 'post',

url:root+"/VirtualPoint/updateVirtualUnit",

dataType: 'json',

data: {

nodeId:nodeId,

datapointId:datapointId,

newName:newName

},

success: function(data) {

if(data.success == "1"){

layer.msg("重命名设备成功!",{icon:1,time:1500})

jQuery("#sensor_ul").jstree("#"+parentnodeId);

// jQuery("#sensor_ul").jstree("refresh");

}else if(data.success == "0_1"){

layer.msg("获取请求参数失败!",{icon:5,time:1500})

}else{

layer.msg("重命名失败!",{icon:5,time:1500})

}

}

});

});

$('#sensor_ul').on("after_open.jstree", function (e, data) {   //节点被打开,并且动画加载完都显示

})

jstree的简单用法的更多相关文章

  1. jsTree 的简单用法--异步加载和刷新数据

    首先这两个文件是必须要引用的,还有就是引用 jQuery 文件就不说了: <link href="/css/plugins/jsTree/style.min.css" rel ...

  2. CATransition(os开发之画面切换) 的简单用法

    CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...

  3. jquery.validate.js 表单验证简单用法

    引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...

  4. NSCharacterSet 简单用法

    NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...

  5. [转]Valgrind简单用法

    [转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...

  6. Oracle的substr函数简单用法

    substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 subst ...

  7. Ext.Net学习笔记19:Ext.Net FormPanel 简单用法

    Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...

  8. TransactionScope简单用法

    记录TransactionScope简单用法,示例如下: void Test() { using (TransactionScope scope = new TransactionScope()) { ...

  9. WPF之Treeview控件简单用法

    TreeView:表示显示在树结构中分层数据具有项目可展开和折叠的控件 TreeView 的内容是可以包含丰富内容的 TreeViewItem 控件,如 Button 和 Image 控件.TreeV ...

随机推荐

  1. 【BZOJ1926】粟粟的书架(主席树,前缀和)

    [BZOJ1926]粟粟的书架(主席树,前缀和) 题面 Description 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co ...

  2. [SDOI2015]星际战争

    水题啦 网络流+二分 误差才10^-3,乱搞直接开longlong暴力每个都乘1000,输出时除一下就好了 # include <bits/stdc++.h> # define IL in ...

  3. web前端UI框架

    分类:WEB前端 时间:2016年1月13日 目前,众多互联网公司APP都嵌入了大量的HTML5,移动端的开发越来越重视,HTML5的运用场景也越来越多了.在移动WEB开发的过程中,使用合适的移动WE ...

  4. Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)

    1. 多进程爬虫 对于数据量较大的爬虫,对数据的处理要求较高时,可以采用python多进程或多线程的机制完成,多进程是指分配多个CPU处理程序,同一时刻只有一个CPU在工作,多线程是指进程内部有多个类 ...

  5. Unity 网格合并

    从优化角度,Mesh需要合并. 从换装的角度(这里指的是换形状.换组成部件的换装,而不是挂点型的换装),都需要网格合并.材质合并.如果是人物的换装,那么需要合并SkinnedMeshRenderer, ...

  6. ios开发数据库版本迁移手动更新迭代和自动更新迭代艺术(二)

    由于大家都热衷于对ios开发数据库版本迁移手动更新迭代和自动更新迭代艺术(一)的浏览下面我分享下我的源文件git仓库: 用法(这边我是对缓存的一些操作不需要可以省去):https://github.c ...

  7. 初学Python3 - 写一个登录程序

    本篇主要实现一个简单的登录程序,默认给出一个账号密码,贴出写的代码及过程中遇到的问题. ----------------------------------------要求如下: username p ...

  8. 前端的UI设计与交互之反馈示篇

    为了帮助用户了解应用当前要做什么,也给用户的下一步行为做参考,以及了解操作后所产生的结果 ,当用户和系统需要交互时,使用不同的模式来反馈信息或结果.当设计者使用反馈或者自定义一些反馈时,请注意:为用户 ...

  9. curl 获取外网IP

    #curl http://members.3322.org/dyndns/getip121.204.134.10

  10. 使用Java理解逻辑程序

    1.Java常见的注释有哪些,语法是怎样的? 1)单行注释用//表示,编译器看到//会忽略该行//后的所文本 2)多行注释/* */表示,编译器看到/*时会搜索接下来的*/,忽略掉/* */之间的文本 ...