JavaScript JsTree实例
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> </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实例的更多相关文章
- JavaScript小实例:拖拽应用(二)
经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...
- javascript小实例,拖拽应用(一)
前面我们将了一下拖拽的基本思想,理论是有了,那实践呢,可以运用到什么地方呢?下面就给大家带来一个用拖拽思想写的一个小实例,供大家参考,大致效果看下图: 就是这样一个简单的一个拖拽条,你可以把它理解为滚 ...
- JavaScript 小实例 - 表单输入内容检测,对页面的增删改
JavaScript 小实例 - 表单输入内容检测,对页面的增删改 效果体验地址:https://xpwi.github.io/js/JavaScript01/jsForm.html 功能: 1.向页 ...
- 10种JavaScript特效实例让你的网站更吸引人
我们有三种主要的方法(从难到易):自己动手写脚本;使用类似于jQuery和mooTools的JavaScript框架(可以让编写代码变得更容易些);使用能工作于现有的JavaScript框架下的提前预 ...
- JavaScript图形实例:线段构图
在“JavaScript图形实例:四瓣花型图案”和“JavaScript图形实例:蝴蝶结图案”中,我们绘制图形时,主要采用的方法是先根据给定的曲线参数方程计算出两点坐标,然后将两点用线段连接起来,线段 ...
- JavaScript动画实例:李萨如曲线
在“JavaScript图形实例:阿基米德螺线”和“JavaScript图形实例:曲线方程”中,我们学习了利用曲线的方程绘制曲线的方法.如果想看看曲线是怎样绘制出来的,怎么办呢?编写简单的动画,就可以 ...
- JavaScript动画实例:递归分形图动态展示
在“JavaScript图形实例:SierPinski三角形” 和“JavaScript图形实例:Levy曲线及其变形”等文章中我们介绍了通过递归生成分形图形的方法.我们可以将绘制的分形图形每隔一定的 ...
- JavaScript图形实例:再谈IFS生成图形
在“JavaScript图形实例:迭代函数系统生成图形”一文中,我们介绍了采用迭代函数系统(Iterated Function System,IFS)创建分形图案的一些实例.在该文中,仿射变换函数W的 ...
- JavaScript图形实例:随机SierPinski三角形
在“JavaScript图形实例:SierPinski三角形”中,我们介绍了SierPinski三角形的基本绘制方法,在“JavaScript图形实例:迭代函数系统生成图形”一文中,介绍了采用IFS方 ...
随机推荐
- hello!
今天是个星期天 第一次开通了朕的博客 么么哒 感觉很困 唔~晚安zzzzz
- MVC Razor视图引擎的入门
首先我们来说说他的给我们开发者带来那些好处吧: Razor语法易于输入,易于阅读,微软当时是这样定义的:简洁,富有表现力和灵活性,支持所有文本编辑器,强大的智能提示功能,单元测试. Rozor文件类型 ...
- centos 7 安装和配置vncserver
前期准备: 关闭防火墙,centos的防火墙是firewalld,关闭防火墙的命令 systemctl stop firewalld.service 关闭enforce setenforce 0 ce ...
- Nonblocking I/O and select()
This sample program illustrates a server application that uses nonblocking and the select() API. Soc ...
- bug: 在缓存行高时,总是记录错误.
一,现象: 1.在 cell 中添加了一个 label, 并对 label 设置了 attributeText, 结果滑动的过程中,cell 的高度总是不对,多次出现下一个 cell 覆盖上一个 ce ...
- C#中的null与void
一.null: 1.明义,null是什么意思? null是指一个变量没有指向具体对象的有效引用. 这句话什么意思呢?意思就是 1).能够使用null修饰的是变量: 2).主要指的是引用. 那么这就引出 ...
- Linux Shell 脚本调试
方法如下所示:(1) 使用选项–x,启用shell脚本的跟踪调试功能: $ bash -x script.sh 运行带有-x标志的脚本可以打印出所执行的每一行命令以及当前状态.注意,你也可以使用sh ...
- ACCEPTANCE CRITERIA FOR USER STORIES
One of the teams I have recently coached quickly got a grasp of how to phrase user stories but found ...
- 利用闭包实现多次ajax请求只执行最后一次
点一个按钮,则向服务器请求资源,不作处理时,多次点击后会有很多个请求在等待.我们知道一般我们用ajax是异步请求,那么我们快速重复点击一个按钮得到的结果其实我们并不知道是哪次点击的结果可能是第一次可能 ...
- POJ1753 Flip Game(bfs、枚举)
链接:http://poj.org/problem?id=1753 Flip Game Description Flip game is played on a rectangular 4x4 fie ...