android ztree,ztree实现权限功能(横向显示)
最近在做權(quán)限功能的時候,采用的ztree實現(xiàn)的,但是產(chǎn)品要求最后一層的權(quán)限節(jié)點要橫向顯示。開始在網(wǎng)上找的解決方案是用css樣式把最后一層的display設(shè)置為inline。在我本地電腦上看了下。效果不錯。
但是,后來測試在用十年前的筆記本測這個功能的時候,發(fā)現(xiàn)特別的卡,導(dǎo)致瀏覽器都崩潰了。所以,性能優(yōu)化開始了。
1、同步改為異步,雖然不卡,但是功能不滿足,很多人勾選了一個父節(jié)點(模塊節(jié)點),就保存,此時子節(jié)點根本沒有,所以保存的數(shù)據(jù)是有問題的。
2、設(shè)置showIcon和showLine為false,發(fā)現(xiàn)速度有一丟丟的提升,但是產(chǎn)品還是不滿意。
3、仔細(xì)看了下,ztree的checkbox都是用span模擬的,搞個背景圖。憑直覺覺得用原生的checkbox要比用圖片模擬要強(qiáng)一些。說干就干,找了ztree提供的一個例子,稍作改造,效果還是很明顯的。用到的主要方法時addDiyDom。
下面把主要的代碼貼上來。
1、數(shù)據(jù)結(jié)構(gòu),要求有一個isLeaf節(jié)點,標(biāo)記是否是子節(jié)點。
var zNodes =[
{ id:1, pId:0, name:"父節(jié)點 1", open:true,isLeaf:false},
{ id:11, pId:1, name:"葉子節(jié)點 1-1",isLeaf:true},
{ id:12, pId:1, name:"葉子節(jié)點 1-2",open:true,isLeaf:false},
{ id:120, pId:12, name:"葉子節(jié)點 1-2-0",isLeaf:true},
{ id:121, pId:12, name:"葉子節(jié)點 1-2-1",isLeaf:true},
{ id:13, pId:1, name:"葉子節(jié)點 1-3",isLeaf:true},
{ id:2, pId:0, name:"父節(jié)點 2", open:true,isLeaf:false},
{ id:21, pId:2, name:"葉子節(jié)點 2-1",isLeaf:true},
{ id:22, pId:2, name:"葉子節(jié)點 2-2",isLeaf:true},
{ id:23, pId:2, name:"葉子節(jié)點 2-3",isLeaf:true},
{ id:3, pId:0, name:"父節(jié)點 3", open:true,isLeaf:false},
{ id:31, pId:3, name:"葉子節(jié)點 3-1",isLeaf:true},
{ id:32, pId:3, name:"葉子節(jié)點 3-2",isLeaf:true},
{ id:33, pId:3, name:"葉子節(jié)點 3-3",isLeaf:true}
];
2、addDiyDom方法
function addDiyDom(treeId, treeNode) {
//console.log(treeNode);
var aObj = $("#" + treeNode.tId + IDMark_A);
var editStr = $("");
editStr.data("treeNode",treeNode);
aObj.before(editStr);
}
3、自己寫的幾個級聯(lián)操作的方法
function checkedHandler(checkbox){
var $checkbox = $(checkbox),
treeNode = $checkbox.data("treeNode"),
state = checkbox.checked;
if(treeNode.isLeaf){ //子節(jié)點
if(state){ //子節(jié)點選中,父節(jié)點要跟著選中,子節(jié)點取消選擇,父節(jié)點不用級聯(lián)
setParentNodeChecked(checkbox);
}
}else{ //父節(jié)點
if(state){ //選中,級聯(lián)子節(jié)點,級聯(lián)父節(jié)點
setParentNodeChecked(checkbox);
setChildNodeChecked(checkbox);
}else{
setChildNodeChecked(checkbox);
}
}
}
/**設(shè)置父節(jié)點選中 */
function setParentNodeChecked(checkbox){
var $pNode = $(checkbox).closest("ul").parent();
var pCheckbox = $pNode.find(".checkboxBtn").get(0);
var treeNode = $(pCheckbox).data("treeNode");
if(pCheckbox.checked === checkbox.checked) return;if(treeNode.pId != "0"){
pCheckbox.checked = checkbox;
setParentNodeChecked(pCheckbox);
}
}
/**設(shè)置子節(jié)點選中 */
function setChildNodeChecked(checkbox){
$(checkbox).closest("li").find(".checkboxBtn").each(function(){
this.checked = checkbox.checked;
});
}
4、css中,設(shè)置:
.ztree li.isLeaf{
display:inline;
}
要想看實際效果,請訪問:http://runjs.cn/detail/jz9f31qr
基于SSM的RBAC權(quán)限系統(tǒng)(1)-利用ajax,bootstrap,ztree完成權(quán)限樹功能
僅支持回顯以及選擇,不支持在樹中的編輯 搭建后臺回顯以及修改的模塊 JSON數(shù)據(jù)封裝 public class Msg { private int code; private String msg; ...
Ztree _ 橫向顯示子節(jié)點、點擊文字勾選、去除指定元素input的勾選狀態(tài)
前些天項目需要樹結(jié)構(gòu)表現(xiàn)數(shù)據(jù),需求ztree就能滿足所以直接使用ztree只是踩了些小坑... 1.ztree子節(jié)點橫向顯示(下圖): 效果說明:第三級子節(jié)點按需求橫向顯示其他豎向顯示,每行最多顯示5 ...
基于xml 實現(xiàn)動態(tài)加載權(quán)限功能樹列表---EFSFrame企業(yè)級開發(fā)架構(gòu)
在學(xué)習(xí)EFSFrame框架的過程中,感觸最深的就是通過xml來實現(xiàn)前臺與后臺數(shù)據(jù)的交互,頁面設(shè)計靈活,不用管后臺如何寫的,前臺與后臺的交互唯一的交互通道都是xml,在我們需要添加頁面.添加規(guī)定的格式的 ...
JavaEE權(quán)限管理系統(tǒng)的搭建(五)--------RBAC權(quán)限管理中的權(quán)限菜單的顯示
上一小節(jié)實現(xiàn)了登錄的實現(xiàn),本小節(jié)實現(xiàn)登錄后根據(jù)用戶名查詢當(dāng)前用戶的角色所關(guān)聯(lián)的所有權(quán)限,然后進(jìn)行菜單的顯示.登錄成功后,如下圖所示,管理設(shè)置是一級菜單,管理員列表,角色管理,權(quán)限管理是二級菜單. 先來 ...
django 權(quán)限設(shè)置-菜單顯示
問題:在用戶登錄后,如何只顯示出用戶權(quán)限的菜單呢?需要設(shè)置顯示菜單權(quán)限 1.為了顯示菜單,需要在models權(quán)限上添加is_menu(手動判斷是否是查看)的icon(圖標(biāo)字符串) 在rbac中錄入另一 ...
不一樣的ZTree,權(quán)限樹.js插件
每一個有趣的創(chuàng)新,都源于苦逼的生活. 在最近的工作中,遇到一個做權(quán)限管理篩選的需求.簡單總結(jié)需求:1展示一個組織中的組織結(jié)構(gòu)2通過點擊組織結(jié)構(gòu)中的任意一個節(jié)點可以向上向下查詢對應(yīng)的組織結(jié)構(gòu) 如果你不想 ...
ztree根據(jù)參數(shù)動態(tài)控制是否顯示復(fù)選框/單選框(靜態(tài)JSON數(shù)據(jù))
本文不再更新,可能存在內(nèi)容過時的情況,實時更新請訪問原地址:ztree根據(jù)參數(shù)動態(tài)控制是否顯示復(fù)選框/單選框(靜態(tài)JSON數(shù)據(jù)): 現(xiàn)有全省各地區(qū)靜態(tài)JSON數(shù)據(jù),現(xiàn)在想通過Url參數(shù),動態(tài)控制是否顯 ...
實現(xiàn)ABP中Person類的權(quán)限功能
菜單項的顯示功能已經(jīng)完全OK了.那么我們就開始制作視圖功能吧. 首先測試接口是否正常 我們通過代碼生成器將權(quán)限和application中大部分功能已經(jīng)實現(xiàn)了.那么我們來測試下這些接口ok不. 瀏覽/a ...
Java喬曉松-android中調(diào)用系統(tǒng)拍照功能并顯示拍照的圖片
android中調(diào)用系統(tǒng)拍照功能并顯示拍照的圖片 如果你是拍照完,利用onActivityResult獲取data數(shù)據(jù),把data數(shù)據(jù)轉(zhuǎn)換成Bitmap數(shù)據(jù),這樣獲取到的圖片,是拍照的照片的縮略圖 代 ...
隨機(jī)推薦
Java 查漏補(bǔ)缺
摘自 計算機(jī)程序的思維邏輯 (4) - 整數(shù)的二進(jìn)制表示與位運算 Java中不支持直接寫二進(jìn)制常量,比如,想寫二進(jìn)制形式的11001,Java中不能直接寫,可以在前面補(bǔ)0,補(bǔ) ...
Javascript Window的屬性
Window的屬性 屬性 描述 closed 獲取引用窗口是否已關(guān)閉. defaultStatus 設(shè)置或獲取要在窗口底部的狀態(tài)欄上顯示的缺省信息. dialogArguments 設(shè)置或獲取傳遞給模 ...
正確使用 Volatile 變量——Brian Goetz
本文轉(zhuǎn)自:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html 由Java并發(fā)大師Brian Goetz所撰寫的. Java 語言中的 v ...
關(guān)于scrollview監(jiān)聽的一些方法
一 package cn.testscrollview; import android.os.Bundle; import android.view.MotionEvent; import andro ...
Activity詳解
Activity是android應(yīng)用的重要組成單元之一(另外3個是Service,BroadcastReceiver和ContentProvider).實際應(yīng)用包含了多個Activity,不同的Act ...
Android音頻底層調(diào)試-基于tinyalsa
因為Android中默認(rèn)并沒有使用標(biāo)準(zhǔn)alsa,而是使用的是tinyalsa.所以就算基于命令行的測試也要使用libtinyalsa.Android系統(tǒng)在上層Audio千變?nèi)f化的時候,能夠能這些個工具 ...
去掉刪除discuz x3.2 的-Powered by Discuz!
如圖discuz論壇 網(wǎng)站標(biāo)題欄的尾巴powered by discuz!是不是很想刪除呢,特別是為什么會剩下短線呢?下面就叫你如何準(zhǔn)確刪除或者修改. 工具/原料 8UFTP(使用自己熟悉的網(wǎng)站文件上 ...
LeetCode 題目總結(jié)/分類
LeetCode 題目總結(jié)/分類 利用堆棧: http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/ http://oj.l ...
SQLALlchemy數(shù)據(jù)查詢小集合
SQLAlchemy是Python編程語言下的一款ORM框架,該框架建立在數(shù)據(jù)庫API之上,使用關(guān)系對象映射進(jìn)行數(shù)據(jù)庫操作.將對象轉(zhuǎn)換成SQL,然后使用數(shù)據(jù)API執(zhí)行SQL并獲取執(zhí)行結(jié)果.在寫項目的過 ...
MFC RichText 滾動條問題
一共涉及兩個問題: 1.如何更加輕快的在RichText不覆蓋之前的文本而添加新的文本 CString text("add text\n"); //想插入的文本,為了使下次輸入我們 ...
總結(jié)
以上是生活随笔為你收集整理的android ztree,ztree实现权限功能(横向显示)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android震动提示音,android
- 下一篇: html不用点击自动执行,页面自动执行(