var RightTree= function () { };
RightTree.prototype = {
//初始化权限树
InitRightTree: function () {
$.ajax({
type: "get",
url: "/Handler/RoleHandler.ashx",
dataType: "json",
data: { type: 6, _: Math.random() },
async: false,
success: function (result) {
if (result.ReturnType == true) {
var objs = eval('(' + result.ReturnData + ')');
$("#treeCheckbox").jstree({
"core": { "data": objs },
"types": {
'default': {
'icon': 'fa fa-folder'
},
'file': {
'icon': 'fa fa-file'
}
},
"checkbox": {
"keep_selected_style": false
},
"plugins": ["checkbox"]
});
}
}
});
},
//获取已分配权限
GetRightTree: function (roleId) {
$.ajax({
type: "get",
url: "/Handler/RoleHandler.ashx",
dataType: "json",
data: { type: 5, Id: roleId, _: Math.random() },
async: false,
success: function (result) {
if (result.ReturnType == true) {
//设置权限树Tree
$.jstree.reference('#treeCheckbox').deselect_all();
var objs = eval('(' + result.ReturnData.pageJson + ')');
for (var i = 0; i < objs.length; i++) {
var obj = objs[i];
$.jstree.reference('#treeCheckbox').select_node("Page_" + obj.id);
}
objs_func = eval('(' + result.ReturnData.funcJson + ')');
$("#treeCheckbox").bind('click.jstree', function (event) {
var eventNodeName = event.target.nodeName;
if (eventNodeName == 'A') {
var $subject = $(event.target).parent();
if ($subject.find('ul').length > 0) {
} else {
var id = $(event.target).parents('li').attr('id');
if (id.indexOf("Page_") == 0) {
id = id.substring(5);
$("#funcContainer").text("");
for (var i = 0; i < objs_func.length; i++) {
var obj = objs_func[i];
if (obj.parent == id) {
var isChecked = "";
var className = "btn-default";
if (obj.isChecked == "True") {
isChecked = "checked='checked' ";
className = "btn-primary";
}
var str = "<a href='#3' style = 'width:200px; height:40px;' id='btn_" + obj.id + "' class='btn btnFunc " + className + " btn-corner'><input id='check_" + obj.id + "' type='checkbox' hidden='hidde' " + isChecked + "' /><label style = 'position:absolute; width:200px; height:42px; margin-left:-100px; margin-top:-8px; line-height:42px' id='lb_" + obj.id + "' for='check_" + obj.id + "'>" + obj.text + "</label></a>&nbsp</br></br>";
$("#funcContainer").append(str);
}
}
//点击操作按钮
$(".btnFunc").unbind("click").click(function (event) {
var eventNodeName = event.target.nodeName;
if (eventNodeName == 'INPUT' || eventNodeName == 'A') {//“LABEL”
var fid = $(this).attr("id").substring(9);
if ($("#check_Func_" + fid).attr("checked")) {
$("#check_Func_" + fid).attr("checked", false);
$("#btn_Func_" + fid).removeClass("btn-primary");
$("#btn_Func_" + fid).addClass("btn-default");
} else {
$("#check_Func_" + fid).attr("checked", true);
$("#btn_Func_" + fid).removeClass("btn-default");
$("#btn_Func_" + fid).addClass("btn-primary");
}
var count = 0;
for (var i = 0; i < objs_func.length; i++) {
var obj = objs_func[i];
if (obj.id == $(this).attr("id").substring(4)) {
obj.isChecked = $("#check_Func_" + fid).attr("checked") ? "True" : "False";
}
if (obj.parent == id && obj.isChecked == "True") {
count++;
}
}
if (count) {
$.jstree.reference('#treeCheckbox').select_node("Page_" + id);
}
else {
$.jstree.reference('#treeCheckbox').deselect_node("Page_" + id);
}
}
});
$("#btnCheckAll").unbind("click").click(function (event) {
var eventNodeName = event.target.nodeName;
if (eventNodeName == 'INPUT' || eventNodeName == 'A') {//"LABEL"
if ($(this).attr("checked")) {
$(this).attr("checked", false);
$("input[type='checkbox']").attr("checked", false);
$(".btnFunc").attr("class", "btn btnFunc btn-corner btn-default");
$.jstree.reference('#treeCheckbox').deselect_node("Page_" + id);
}
else {
$(this).attr("checked", true);
$("input[type='checkbox']").attr("checked", true);
$(".btnFunc").attr("class", "btn btnFunc btn-corner btn-primary");
$.jstree.reference('#treeCheckbox').select_node("Page_" + id);
}
for (var i = 0; i < objs_func.length; i++) {
var obj = objs_func[i];
if (obj.parent == id) {
obj.isChecked = $(this).attr("checked") ? "True" : "False";
}
}
}
});
}
}
}
});
}
}
});
},
//保存配置的权限
SaveRightTree: function (roleId) {
var funcArr = new Array();
for (var i = 0; i < objs_func.length; i++) {
if (objs_func[i].isChecked == "True") {
funcArr.push(objs_func[i].id);
}
}
var treeArr = new Array();
var treeSelect = $.jstree.reference('#treeCheckbox').get_selected(true);
for (var i = 0; i < treeSelect.length; i++) {
if ($.inArray(treeSelect[i].id, treeArr) < 0) {
treeArr.push(treeSelect[i].id);
}
if (treeSelect[i].id.indexOf("Page_") < 0 && treeSelect[i].parent != "#" && $.inArray(treeSelect[i].parent, treeArr) < 0) {
treeArr.push(treeSelect[i].parent);
}
}
var funcList = funcArr.join(',');
var treeList = treeArr.join(',');
$.ajax({
type: "post",
url: "/Handler/RoleHandler.ashx",
dataType: "json",
data: { type: 7, RoleId: roleId, FuncList: funcList, TreeList: treeList, _: Math.random() },
async: false,
cache: false,
complete: function () { },
success: function (result) {
if (result.ReturnType) {
alert(result.ReturnMsg);
}
}
});
}
172 }

http://www.jstree.com/     Jstree API

JavaScript JsTree实例的更多相关文章

  1. JavaScript小实例:拖拽应用(二)

    经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...

  2. javascript小实例,拖拽应用(一)

    前面我们将了一下拖拽的基本思想,理论是有了,那实践呢,可以运用到什么地方呢?下面就给大家带来一个用拖拽思想写的一个小实例,供大家参考,大致效果看下图: 就是这样一个简单的一个拖拽条,你可以把它理解为滚 ...

  3. JavaScript 小实例 - 表单输入内容检测,对页面的增删改

    JavaScript 小实例 - 表单输入内容检测,对页面的增删改 效果体验地址:https://xpwi.github.io/js/JavaScript01/jsForm.html 功能: 1.向页 ...

  4. 10种JavaScript特效实例让你的网站更吸引人

    我们有三种主要的方法(从难到易):自己动手写脚本;使用类似于jQuery和mooTools的JavaScript框架(可以让编写代码变得更容易些);使用能工作于现有的JavaScript框架下的提前预 ...

  5. JavaScript图形实例:线段构图

    在“JavaScript图形实例:四瓣花型图案”和“JavaScript图形实例:蝴蝶结图案”中,我们绘制图形时,主要采用的方法是先根据给定的曲线参数方程计算出两点坐标,然后将两点用线段连接起来,线段 ...

  6. JavaScript动画实例:李萨如曲线

    在“JavaScript图形实例:阿基米德螺线”和“JavaScript图形实例:曲线方程”中,我们学习了利用曲线的方程绘制曲线的方法.如果想看看曲线是怎样绘制出来的,怎么办呢?编写简单的动画,就可以 ...

  7. JavaScript动画实例:递归分形图动态展示

    在“JavaScript图形实例:SierPinski三角形” 和“JavaScript图形实例:Levy曲线及其变形”等文章中我们介绍了通过递归生成分形图形的方法.我们可以将绘制的分形图形每隔一定的 ...

  8. JavaScript图形实例:再谈IFS生成图形

    在“JavaScript图形实例:迭代函数系统生成图形”一文中,我们介绍了采用迭代函数系统(Iterated Function System,IFS)创建分形图案的一些实例.在该文中,仿射变换函数W的 ...

  9. JavaScript图形实例:随机SierPinski三角形

    在“JavaScript图形实例:SierPinski三角形”中,我们介绍了SierPinski三角形的基本绘制方法,在“JavaScript图形实例:迭代函数系统生成图形”一文中,介绍了采用IFS方 ...

随机推荐

  1. 【BZOJ1857】[Scoi2010]传送带 三分法

    三分套三分,挺神奇的...每次找到,每个传送带的上下两个三等分点,下面那个小,则一定有更优的在中间. #include <iostream> #include <cstdio> ...

  2. windows下面安装Python和pip终极教程

    在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言.总的来说,个 人很喜欢Python的语言风格,但是这门语言对于windows并不算很友好,因为如果是初学者在windows环境下安装 ...

  3. nodejs redis 发布订阅机制封装

    最近项目使用redis,对publish 和 subscribe的使用进行了了解,并进行了封装. var config = require('../config/config'); var log = ...

  4. mysql单列去重复group by分组取每组前几条记录加order by排序

    mysql分组取每组前几条记录(排名) 附group by与order by的研究,需要的朋友可以参考下 --按某一字段分组取最大(小)值所在行的数据 复制代码代码如下: /* 数据如下: name ...

  5. [LintCode] Product of Array Except Self 除本身之外的数组之积

    Given an integers array A. Define B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], calculate B WI ...

  6. Python之路第一课Day10--随堂笔记(异步IO\数据库\队列\缓存)

    本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SS ...

  7. Swift 3 and OpenGL on Linux and macOS with GLFW

    https://solarianprogrammer.com/2016/11/19/swift-opengl-linux-macos-glfw/ Swift 3 and OpenGL on Linux ...

  8. MYSQL删除重复数据

     delete from co_jobinformation cwhere c.name in (select cc.name from co_jobinformation cc group by   ...

  9. 借助cookie实现子网页修改父网页内容遇到的问题:同一个浏览器访问相同页面,会互相影响。 (已解决)

    问题是这样的,  我把左侧菜单做成了网页, 然后点击左侧菜单选项会改变右侧内容, 也就是子网页访问并修改父网页的内容. 为了兼容性更好, 我没有使用farther,或者opener等方法,  而是用了 ...

  10. Delphi中stringlist分割字符串的用法

    Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...