『壹』 ztree中如何獲取所有節點
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
zTree = $.fn.zTree.getZTreeObj("treeDemo");
var nodes=zTree.getNodes();
var nodes_array = zTree.transformToArray (nodes);
for(var i=0;i<nodes_array.length;i++){
alert(nodes_array[i].name);
}
//下面是api,自己不會看么,zTreeObj.getNodes是所有節點數據都在裡面,自己不會取,就不要瞎叫喚,自己可以用火狐看裡面的數據是不是都有
zTreeObj.getNodes
概述[ 依賴 jquery.ztree.core 核心 js ]
獲取 zTree 的全部節點數據
請通過 zTree 對象執行此方法。
Function 參數說明
返回值Array(JSON)
全部節點數據
1、Array 僅僅是根節點的集合(默認情況子節點都岩慧處於 children 屬性下);
2、如需遍歷全部節點需要利用遞歸,或利用 transformToArray 方法 將數據變成簡單的 Array 集合
3、對於非同步載入模式下,尚未載入的子節點是無法通過此方法獲取瞎歲的。
function 舉例粗神答
1. 獲取全部節點數據
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getNodes();
『貳』 ztree樹的使用
記錄項目中關於ztree插件的使用。
實現的功能有:排序、遷移、搜索、刪除、右鍵菜單、重命名、新增。
這里是由於項目需要不同人員的許可權不同,右鍵菜單選項不同;如果你也有這種需求,我覺得這里有兩種實現方式,一是像這里寫的,點擊右鍵時去後代判斷,根據判斷結果再去顯示;二是在獲取樹的信息的時候,把判斷所需要的必要參數直接放在json里一塊返回來,這樣前台只需要直接判斷就行了。
實現的效果是:輸入框內只要有輸入變化,就會執行一次搜索方法雹肢輪
火狐有一個bug,就是假源信如樹中含有一個名字為「haha」的節點和名字為「哈哈」的節點,這時你用中文輸入法去打「哈」這個字,發現只能輸入英文。。扯遠了,當然這個可以不做。重點是搜索方法。
其實獲取到含有搜索關鍵字的所有節點很簡單,ztree已經封裝好了,就是getNodesByParamFuzzy()。
但是,想要的效果是,執行下一次搜索時,要把上一次搜索展開的節點全都關閉,再去展開這種的符合條件的節點。
按道理講,也很簡單,調用expandAll(false)就可以將節點都關閉,然後再去展開符合條件的節點就行了。
但是這樣寫了以後,發現上次搜索展開的節點並不會全部關閉,而是有的關閉了,有的還是展開的。
在網上搜了很久,在ztree的github項目的issue中找到了一點線索,說展開和關閉都是有動畫的。
我想可能是前面的關閉所有節點還沒有執行完,與後面的展開節點沖突了。
於是就飢虛去api里找,發現有expandSpeed這個參數設置,將動畫關閉,這個bug竟然好了。
具體的關於dom的內部原理我不了解。
這里實現的效果是:滑鼠移動到某個節點上時,節點後面會出現一個圖標,點擊圖標,實現something
『叄』 ztree判斷所有節點是否選中狀態
獲取 zTree 當前被選中的節點局仔數據集合
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
獲取 zTree 的全部節點數據
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getNodes();
for(var node in nodes){
//判斷桐租汪節點是否選中
var checked = node.checked;
if(checked){
alert("該節點處於選中狀態");
}else{
alert("該節點型衫未選中");
}
}
『肆』 ztree怎麼獲取節點選中變化的節點
<script>
function filter(node) { //過濾器直選中2級節點累加
return (node.level == 2 && node.checked == true);
}
var setting = { //設置
check: {
enable: true
},
callback: {
onCheck: onCheck
}};
function onCheck(e, treeId, treeNode){ //這是將所有選中節點的名字 用,分割做拼接 用於持久化到資料庫
var zTree = $.fn.zTree.getZTreeObj("tree").getNodesByFilter(filter);
var choose = "";
for (var i=0;i<zTree.length;i++) {
if(zTree[i].name !=null)
choose +=(i == (zTree.length-1))?zTree[i].name:zTree[i].name+",";
}
$("#ztreesnames").val(choose);
treeIds();
}
function treeIds(){ //這是將選中的節點的id用;分割拼接起來,用於持久化到資料庫
var zTreeO = $.fn.zTree.getZTreeObj("tree").getNodesByFilter(filter);
var idListStr = "";
for (var i = 0; i < zTreeO.length; i++) {
if (zTreeO[i].id != null) {
idListStr+= (i == (zTreeO.length-1))?zTreeO[i].id:zTreeO[i].id+";";
}
};
$("#ztreeids").val(idListStr);
『伍』 為什麼ztree 父節點的子節點全部被選中時會選中父節點,怎樣使子節點全選中時不關聯到父節點
ztree 父節點的子節點全部被選中時會選中父節點是因為沒有插入新的父節點。使子節點全選中時不關聯到父節點步驟如下:
1、首先第一步就是進行在新建思維導圖中,右擊點擊「編輯節點」,修改名稱即可。
『陸』 ztree如何判斷當前選中節點的前面是否有節點選中
1. 獲取當前被勾拍晌敗選的節點集合
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getCheckedNodes(true);
2.然後你再判斷這些節點是不是在當前節點之前就可以啦,可以通謹純過 treeid進行襲顫判斷
『柒』 ztree實現點擊左邊樹節點右側顯示對應的子數據,且子數據可以進行模糊檢索,怎麼弄
1、getNodeByParam方法可以找到指定的節點數據2、selectNode方法可以選中節點,如果是checkbox的勾選,那麼請使用checkNode方法希望能幫助到你!
『捌』 關於jquery插件zTree刪除節點的問題
你好
由於ztree對於自身的removeBtn綁定了對應的beforeRemove等的事件,而你昌攔的做法是通過執行zTree.removeNode來完成的刪除,並不是通過removeBtn來執行的,ztree的removeNode方法沒有觸發對應的beforeRemove方法,所以你要在你的事件中,重寫整理方法
$("#***").click(function(){
var nNode = zTree.getSelectedNodes()[0];
if(nNode){
zTree.removeNode(nNode);
// 這裏手動執行一耐絕胡次方法
zTreeBeforeRemove(nNode.id, nNode);
}
})
beforeRename是因為修改的節點,節點宏遲本身依然存在,就和
$("select").change(function(){ // 改變則執行方法 })
$("select").remove(); 是沒有 .remove(function(){})
是類似的道理
因為節點已經刪除了,先刪除,再執行方法,是無效的
『玖』 查詢一條數據時怎麼定位到zTree節點
1、zTree 有 getNodeByParam getNodesByParam getNodesByParamFuzzy 這幾個單屬性的查詢方法; 最新的v3.2 提供了 getNodesByFilter 方法,你可以自己製作各種復雜的查詢規則,進行任意搜索!!!強烈推薦!
2、找到 節點數據 treeNode 後,直接利用 selectNode 方法進行定位即可!
『拾』 如何去除Ztree已選節點的勾,既返回到未選狀態
使用ztree的checkAllNodes(false)這個方法,可以去除所有的選中,還有checkNode這個輪前方法,配置相應參昌攔數,能去除某個選中點,不要臘迅清使用cancelSelectedNodes() 方法