基於jQuery的樹結構,允許多選、單選


  需要一個可以選擇部門的功能,開始選用的是easyUI tree,不過最后被嫌棄了,只好尋找更優的解決方法,當然也可以通過異步加載的方式來避免一次性載入速度慢的問題,但這不在考慮范圍內。

  終於在《打造基於jQuery的高性能TreeView》中找到了一個不錯的東東,具體就不用多說,看原文就可以。http://www.cnblogs.com/xuanye/archive/2009/10/26/1590250.html

  這里要討論的就是如何將現有的插件改造成自己想要的,原插件是多選的,而這里選擇部門只需要選擇一個就可以了,簡單點可以通過限定最終的選定的結果數量來限制,但是選擇框還是checkbox,既然要用那么就整像樣點,所以就來動手改造成radio的形式,原插件擴展也是非常容易的,只需要做簡單的修改就可以滿足自己的要求。

  1、首先是插件的設置,一處是覆蓋checkbox的0、1狀態的圖標,用准備好的radio來替換,另一處就是覆蓋checkbox的點擊方法

 1 var o = {
 2                 showcheck: true,          
 3                 theme: "bbit-tree-lines", //bbit-tree-lines ,bbit-tree-no-lines,bbit-tree-arrows
 4                 icons: ["radio_0.gif", "radio_1.gif", "checkbox_2.gif"],
 5                 oncheckboxclick:function(item){
 6                     $("#tree").clear();
 7                     var s = item.checkstate != 1 ? 1 : 0;
 8                     $("#tree").nodeclick(item,s);
 9                     return true;
10                 }
11             };

  2、需要在插件里增加2個方法,就是前面點擊事件用到的方法

 1 //重置所有選中項
 2     $.fn.clear = function() {
 3         if (this[0].t) {
 4             return this[0].t.clear();
 5         }
 6         return null;
 7     };
 8     //節點點擊
 9     $.fn.nodeclick = function(item,s) {
10         if (this[0].t) {
11             this[0].t.check(item,s);
12         }
13     };

  3、 我采用的數據是用java后台輸出json,對象的屬性首頁字母輸出是小寫,原插件的子結點名為ChildNodes,我這邊改成了childNodes。

效果圖如下:

 

 http://files.cnblogs.com/longterm/treeview_radio.rar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM