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