之前都是用JQuery對樹的支持來實現目錄樹的,近來閒來無事就弄了下dTree,感受其無限級目錄仍是挺好的,並且它的使用也比較方便,基本上 就是先把要用的js文件即dtree.js和css文件dtree.css引入,另外就是它默認的圖片,固然這些圖片都是能夠本身指定的,它的css樣式 也能夠本身改變的!css
關於dTree就先談談它的node,dTree的node的構造方法能夠指定下列參數,html
id //惟一標識,數字型
pid//父節點的id,若是是根結點那就只能是-1,通常來說只有一個最頂層的根結點
name//結點的名字,字符串類型,在頁面上顯示出來的標籤.
url//字符串類型,表示當點擊該葉子結點的時候訪問哪一個URL.
title//title,字符串類型,鼠標進入時顯示的字符串.
target//字符串類型,超連接的目標位置.
icon //字符串類型,表示該結點圖標的圖片路徑,不指定則使用默認的
iconOpen//結點打開時候的圖片路徑,不指定則使用默認的
open//boolean類型,表示初始狀態是不是打開的 java
mytree.add(1, 0, 'My node', 'node.html', 'node title', 'mainframe', 'img/musicfolder.gif');
有了node之後就是構建樹了node
//引入了dtree.js後,就可使用new dTree()了
myTree = new dTree();//這樣就新建了一個dTree了struts2的interceptor實現權限管理,
//新建了dTree之後就是把剛建的node給添進去了,
mytree.add(1, 0, 'My node', 'node.html', 'node title', 'mainframe', 'img/musicfolder.gif');ajax
在最後還能夠指定一些配置參數:數據庫
target//全部結點的目標
folderLinks//非葉子結點是否也是能夠連接的,默認是true
useSelection//結點是否能夠被選擇,默認true.
useCookies//是否使用cookies來記錄當前樹的狀態,默認是true
useLines//是否用線來畫樹,默認是true
useIcons//是否使用圖標來構建樹,默認是true
useStatusText//是否在狀態欄顯示結點的名字,而不是在URL的位置顯示,默認是false
closeSameLevel//是否同時只能有一個文件夾處於打開狀態,默認爲false,當爲true的時候關閉全部的文件夾和打開全部的文件夾將不會起做用
inOrder//是否先添加父結點再添加子節點, 默認爲false,爲true能夠加快加載速度
//例如:
mytree.config.target = "mytarget";json
像這些結點的相關信息,咱們通常都是要從後臺來獲得的,或者從數據庫,或者從配置文件,若是加上覆雜的權限控制就得每次都到後臺取一次了,
而從後臺獲得這些數據的話通常經常使用的是以ajax請求取得json格式的數據,而後在頁面上就能夠很是方便的使用了,可是使用ajax請求的時候
就會有一個問題出現了,那就是通常的ajax請求都是異步的,這時候,頁面不會等ajax的請求返回就已經往下面執行了,等ajax請求返回的時候
頁面已經不能再使用其返回的數據進行操做了,因此這個時候須要使用ajax的同步請求了!ajax的同步請求很簡單隻要在ajax的請求的時候加上一個
區別於ajax請求類型的參數就好了,通常都是async,像JQuery的用法就是這樣的:$.ajax( {
url : "module/geneMenu",
async : false//同步,等這個請求完成後才繼續往下執行,這樣myTree才能使用返回來的數據
});cookie
使用了ajax的同步請求之後,頁面在解析到ajax請求的時候就會等ajax請求返回之後再繼續往下面執行,這樣就能夠利用
ajax的返回值來進行對dTree的node的操做了!異步
還有一個問題就是咱們經常會利用Frame來將頁面進行佈局成左邊是menu欄,而右邊是主頁面,上邊是一些基本信息這樣的結構
這樣咱們就須要在點擊menu欄的葉子結點時,在mainFrame裏面顯示請求返回後的內容,其實要實現這個要求挺簡單的,只須要
把node的target指定爲mainFrame的name便可async