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方 ...
随机推荐
- WP8解析JSON格式(使用DataContractJsonSerializer类)(推荐)
DataContractJsonSerializer是.NET自带的类,在解析JSON格式的时候使用起来方便快捷,至于生成方面由于暂时没用到就没去看了.使用需要引用System.Runtime.Ser ...
- 许愿墙的搭建基于mysql
首先需要两个服务器(也可以用一台,但不推荐) 1服务器用yum安装Apache+php+php-mysql 2服务器用yum安装mysql 1服务器 用yum安装Apache和php+php-mysq ...
- clear属性
clear:规定元素的哪一侧不允许其他浮动元素. clear 属性定义了元素的哪边上不允许出现浮动元素.在 CSS1 和 CSS2 中,这是通过自动为清除元素(即设置了 clear 属性的元素)增加上 ...
- STM32之DMA+ADC
借用小甲鱼的经典:各位互联网的广大网友们.大家早上中午晚上好..(打下小广告,因为小甲鱼的视频真的很不错).每次看小甲鱼的视频自学都是比较轻松愉快的..我在想,如果小甲鱼出STM32的视频,我会一集不 ...
- flash小游戏在Kongregate上线——BasketBall Master(篮球大师)
小游戏地址,欢迎上去留言评论.游戏完成度没有达到期望水平,只能算完成了核心玩法吧,一些其他构想来不及实现. BasketBall Master(篮球大师) 这个小游戏很早之前就基本做好了,只因有些细节 ...
- sublime Text 3 字体
1,Comic Sans Ms 2,DejaVu Sans Mono 3,microsoft yahei(微软雅黑) 4,Microsoft Yahei UI(微软雅黑增强版) 5,Ubuntu Mo ...
- Raid 介绍以及软raid的实现
RAID: old Redundant Arrays of Inexpensive Disks (廉价磁盘冗余阵列) new Redundant Arrays of Independent Disks ...
- WDM驱动和NT驱动之我见
WDM驱动是NT驱动的进化版.我个人觉得它的主要好处有两个 1.能检测到设备的插入,系统能自动分配设备的硬件信息,如中断号.IO端口.设备物理地址等 2.支持设备的开机状态拔出 之前的NT驱动和硬件关 ...
- [转]runtime 消息机制
原文地址:http://www.jianshu.com/p/f6300eb3ec3d 一.关于runtime 之前在项目中有遇到过用runtime解决改变全局字体的问题,所以再一次感受到了runtim ...
- 一步一步学ROP之linux_x86篇
一步一步学ROP之linux_x86篇 作者:蒸米@阿里聚安全 一.序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过 ...