<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        zTree jQuery 樹插件的使用(實例講解)

        來源:懂視網 責編:小采 時間:2020-11-27 22:29:08
        文檔

        zTree jQuery 樹插件的使用(實例講解)

        zTree jQuery 樹插件的使用(實例講解):分享說明: 項目需要樹狀視圖形式展示后臺返回的數據;并實現點擊節點將節點信息添加到右側的ul中;待后續提交獲取使用;選擇了能夠實現異步加載節點信息的zTree插件,事實也證明這個插件足夠強大,能夠滿足幾乎所有需求;剛接觸時看了很多人的分享,結合官方api
        推薦度:
        導讀zTree jQuery 樹插件的使用(實例講解):分享說明: 項目需要樹狀視圖形式展示后臺返回的數據;并實現點擊節點將節點信息添加到右側的ul中;待后續提交獲取使用;選擇了能夠實現異步加載節點信息的zTree插件,事實也證明這個插件足夠強大,能夠滿足幾乎所有需求;剛接觸時看了很多人的分享,結合官方api

        分享說明:

        項目需要樹狀視圖形式展示后臺返回的數據;并實現點擊節點將節點信息添加到右側的ul中;待后續提交獲取使用;選擇了能夠實現異步加載節點信息的zTree插件,事實也證明這個插件足夠強大,能夠滿足幾乎所有需求;剛接觸時看了很多人的分享,結合官方api文檔,終于實現了功能,現將我學習的總結也分享出去.

        效果介紹;除了zTree默認的效果;使用api增加了一些實用的操作;包括手風琴效果;點擊父節點展開效果;點擊節點文字關聯復選框效果;一級子節點數量展示效果.

        外部引入資源

        <link rel="stylesheet" href="./zTree_v3-master/css/zTreeStyle/zTreeStyle.css" rel="external nofollow" >
        <script type="text/javascript" src="./jquery-1.9.1.js"></script>
        <script type="text/javascript" src="./zTree_v3-master/js/jquery.ztree.all.min.js"></script>

        html部分代碼

        <div class="box">
         <ul id="treeDemo" class="ztree"></ul>
         <ul id="ulright">
         <li style="text-align: center;background-color: #ddd;border-bottom: 1px dashed">已選擇</li>
         </ul>
         </div>

        css代碼

        ul,li,body{
         margin: 0;
         padding: 0;
         }
         .ztree li span.node_name {
         font-size: 16px;
         }
         .box{
         width: 500px;
         margin:10px auto;
         border:3px solid #ccc;
         padding: 20px;
         border-bottom: none;
         }
         #treeDemo{
         width: 200px;
         display: inline-block;
         background-color: #f1f1f1;
         min-height: 200px;
         }
         #ulright{
         width: 200px;
         margin-left: 50px;
         min-height: 200px;
         border:1px solid #ccc;
         display: inline-block;
         vertical-align: top;
         background-color: #eeeee8;
         }
         #ulright li{
         width: 100%;
         height: 30px;
         list-style: none;
         line-height: 30px;
         margin-bottom: 3px;
         background-color: #00b6ba;
         padding-left: 10px;
         box-sizing: border-box;
        
         }
        
        
         /**/
         .ztree li a.curSelectedNode{
         background-color: transparent;
         border:#00b6ba;
         }
         .ztree li span.node_name{
         font-size: 18px;
         line-height: 18px;
         color: #000;
         }
         .ztree li a{
         padding: 5px;
         vertical-align: middle;
         }
         .ztree li a:hover{
         text-decoration: none;
         }
         .ztree li span.button.chk{
         margin: 9px 3px;
         }

        js代碼

        //遞歸找到所有節點(非父節點)
        function getAllChildrenNodes(treeNode,result){
         if (treeNode.isParent) {
         var childrenNodes = treeNode.children;
         if (childrenNodes) {
         for (var i = 0; i < childrenNodes.length; i++) {
         if(!childrenNodes[i].children){
         result.push(childrenNodes[i].name);
         }
         result = getAllChildrenNodes(childrenNodes[i], result);
         }
         }
         }
         return result;
        }
        var parames = 3;
        //zTree的所有配置
        var setting = {
         //zTree 的唯一標識,初始化后,等于 用戶定義的 zTree 容器的 id 屬性值。
         treeId:"",
         //zTree 容器的 jQuery 對象,主要功能:便于操作,內部參數,不可修改
         treeObj:null,
         //異步請求數據配置;當父節點沒有子節點時;點擊此父節點會觸發請求
         async:{
         //打開此功能
         enable: true,
         url:"./zTreeDemoV9.0SimpleFromV10.0.php",
         type:"post",
         //發送的父級id的字段定義;如修改,遵循格式autoParam: ["id=parentId"]
         autoParam: ["id"],
         //其他需要提交的參數["name","topic","key","ss"]轉換后格式為name=topic&key=ss
         otherParam:["json",parames || 1,"test","2"],
         dataType:"json",
         contentType: "application/x-www-form-urlencoded",
         //ajax請求后的數據預處理函數
         dataFilter: function(treeId,parentNode,responseData){
         for(var i=0;i<responseData.length;i++){
         responseData[i] = JSON.parse(responseData[i])
         }
         return responseData;
         }
         },
         //數據配置
         data: {
         simpleData: {
         enable: true,
         idKey: "id", //修改默認的ID為自己的id
         pIdKey: "pid", //修改默認父級ID為自己數據的父級id
         rootPId: 0 //根節點的父節點id
         }
         },
         //視圖配置
         view: {
         //是否顯示節點前的圖標
         showIcon: false,
         //節點上a標簽的樣式
         fontCss: {
         }
         },
         //選框配置
         check: {
         //啟用復選框
         enable: true,
         //chkStyle:"radio"
         //復選框父子級選擇聯動設置
         chkboxType: { "Y": "ps", "N": "ps" }
         },
         //事件配置
         callback: {
         //點擊復選框之前的事件
         beforeCheck:function(treeId, treeNode){//如果節點是父節點,并且勾選時沒有子節點,則不允許勾選;針對父節點沒有展開,則沒有異步加載子節點,此情況禁止點擊父節點全選子節點的操作
         if(treeNode.isParent && !treeNode.children){
         return false;
         }
         },
         //回調錯誤事件
         onAsyncError: function(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown){
         alert("初始化節點數據失敗,請稍后重試");
         },
         //回調成功事件
         onAsyncSuccess: function(event, treeId, treeNode, resData){
         var zTree = $.fn.zTree.getZTreeObj("treeDemo");
         console.log("數據加載成功");
         var count = (treeNode.children.length);
         //加載成功后;在節點后面顯示此父節點下有幾個一級子節點
         $(".ztree").find("a[title="+treeNode.name+"]").find("span[class='node_name']").html(treeNode.name+"<span>("+count+")</span>");
         },
         //父節點展開時的事件
         onExpand: function(event, treeId, treeNode){
         //zTree對象
         var zTree = $.fn.zTree.getZTreeObj("treeDemo");
         //獲取點擊的id
         var nowId = treeNode.id;
         //獲取所有節點
         var allNodes = zTree.getNodes();
         //獲取點擊節點的層級
         var level = treeNode.level;
         //定義過濾函數;獲取節點層級與點擊節點層級相同并且為父節點的節點
         function filter(node) {
         return (node.level == treeNode.level && node.isParent);
         }
         //獲得點擊節點同級的父節點的集合
         var sameLevelNodes = zTree.getNodesByFilter(filter);
         //遍歷同級節點集合
         for(var i=0;i<sameLevelNodes.length;i++){
         //將非被點擊父節點收起;實現手風琴效果
         if(sameLevelNodes[i].id != nowId){
         zTree.expandNode(sameLevelNodes[i], false, true, true);
         }
         }
         },
         //點擊事件
         onClick: function(e, treeId, treeNode, clickFlag) {
         //tree實例
         var zTree = $.fn.zTree.getZTreeObj("treeDemo");
         //點擊文字關聯復選框
         //如果不是父節點,則關聯,或者是父節點,但展開狀態位true是,也關聯;
         if(!treeNode.isParent || (treeNode.isParent && treeNode.open)){
         zTree.checkNode(treeNode, !treeNode.checked, true);//點擊文字關聯復選框
         }
         //點擊文字展開當前節點
         zTree.expandNode(treeNode, true, true, true);
         // zTree.reAsyncChildNodes(treeNode, "refresh");//強行異步加載(存在子節點也進行加載)
         //手風琴效果;直接調用onExpand
         zTree.setting.callback.onExpand(e, treeId, treeNode);
        
         //點擊節點名稱和勾選節點前面的復選框邏輯相同;
         //直接在onClick里面調用onCheck函數;并傳入所需參數
         zTree.setting.callback.onCheck(e, treeId, treeNode);
         },
         //點擊復選框事件
         onCheck: function(e, treeId, treeNode) {
         //獲取右側ul內所有li標簽;用于比較當前選擇復選框在右側是否一斤存在
         var rightLi = $("#ulright").find("li");
         //選中的是底層節點;
         if(!treeNode.isParent){
         //選中狀態,加入到右側
         if(treeNode.checked){
         //遍歷右側li,如果選中的已經存在;return
         for(var i=0;i<rightLi.length;i++){
         if($(rightLi[i]).attr("title") == treeNode.name){
         return;
         }
         }
         // 創建li 追加li
         var addLi = $("<li title="+treeNode.name+"><span></span>");
         addLi.find("span").text(treeNode.name);
         addLi.animate({
         width:"100%",
         height:"30"
         },400)
         addLi.appendTo($("#ulright"));
         //如果點擊的節點存在connect字段;判斷復選框狀態加入到右側ul或刪除
         if(treeNode.connect){
         //遍歷右側li,如果選中的已經存在;return
         for(var i=0;i<rightLi.length;i++){
         if($(rightLi[i]).attr("title") == treeNode.connect){
         return;
         }
         }
         // 創建li 追加li
         var addLi = $("<li title="+treeNode.connect+"><span></span>");
         addLi.find("span").text(treeNode.connect);
         addLi.animate({
         width:"100%",
         height:"30"
         },400)
         addLi.appendTo($("#ulright"));
         }
         //將被勾選的節點背景顏色更改
         $("#treeDemo").find("a[title="+treeNode.name+"]").css("backgroundColor","#00b6ba");
         //非選中狀態,刪除
         }else{
         //將右側的次節點對應的li刪除
         $("#ulright").find("li[title="+treeNode.name+"]").animate({
         width:"0%",
         height:"0"
         },400,function(){
         $("#ulright").find("li[title="+treeNode.name+"]").remove();
         })
         //取消此節點的背景顏色
         $("#treeDemo").find("a[title="+treeNode.name+"]").css("backgroundColor","");
         }
         //選中的是父節點;獲取所有子節點(非父節點),判斷復選框狀態加入到右側ul或刪除
         }else{
         //調用遞歸函數;獲取所有非父級子節點數組集合
         var addNodesArray = getAllChildrenNodes(treeNode,[]);
         //是選中狀態,加入到右側ul
         if(treeNode.checked){
         //定義存儲右側li的數組
         var rightLiArray = [];
         $("#ulright li").each(function(i,v){
         rightLiArray.push($(v).attr("title"))
         })
         rightLiArray = rightLiArray.slice(1);
         //遍歷勾選的數組集合
         for(var i=0;i<addNodesArray.length;i++){
         //判斷此節點是否在右側ul內;不存在則加入
         if(rightLiArray.indexOf(addNodesArray[i]) == -1){
         //創建li 追加li
         var addLi = $("<li title="+addNodesArray[i]+"><span>"+addNodesArray[i]+"</span>");
         addLi.animate({
         width:"100%",
         height:30
         },400)
         addLi.appendTo($("#ulright"));
         }
         //將節點背景顏色修改
         $("#treeDemo").find("a[title="+addNodesArray[i]+"]").css("backgroundColor","#00b6ba");
         }
         //是非選中狀態,刪除
         }else{
         //遍歷節點,執行刪除操作
         for(var i=0;i<addNodesArray.length;i++){
         $("#ulright").find("li[title="+addNodesArray[i]+"]").animate({
         width:"0%",
         height:0
         },function(){
         $(this).css("display","none");
         $(this).remove();
         })
         //還原背景顏色
         $("#treeDemo").find("a[title="+addNodesArray[i]+"]").css("backgroundColor","");
         }
         }
         }
         },
         }
        
        };
        //zTree的節點信息;可一次性全部加載;可試試異步請求
        var zNodes = [{
         name: "數據表",//名稱
         id: 4,//id,子元素的pid
         isParent:true,//是否為父節點,默認為false
         pid:0//父節點id;data中的rootPId;
         },{
         name: "測試表",
         id: 1,
         isParent:true,
         pid:0
         },{
         name: "信息表",
         id: 2,
         isParent:true,
         pid:0
         },{
         name: "作廢表",
         id: 3,
         isParent:true,
         pid:0
         }];
        $(document).ready(function() {
         //初始化zTree; zTree容器的jquery對象/ 配置/ 節點
         $.fn.zTree.init($("#treeDemo"), setting, zNodes);
        });

        后臺php代碼;本人純前端,后臺代碼只會簡單的寫寫;

        <?php
        
        $pId = $_POST['id'];
        
        if($pId == 4){
         $array = array('{"name":"數據表_一","id":"1_1","pid":"0"}','{"name":"數據表_二","id":"1_2","pid":"0"}','{"name":"數據表_三","id":"1_3","pid":"0"}','{"name":"數據表_四","id":"1_4","pid":"0"}','{"name":"數據表_五","id":"1_5","pid":"0"}');
        }else if($pId == 1){
         $array = array('{"name":"測試表_一","id":"2_1","pid":"1"}','{"name":"測試表_二","connect":"測試表_一","id":"2_2","pid":"1"}','{"name":"測試表_三","id":"2_3","pid":"1"}','{"name":"測試表_四","id":"2_4","pid":"1"}','{"name":"測試表_五","id":"2_5","pid":"1"}');
        }else if($pId == 2){
         $array = array('{"name":"信息表_一","id":"3_1","pid":"3"}','{"name":"信息表_二","id":"3_2","pid":"3"}','{"name":"信息表_三","id":"3_3","pid":"3"}','{"name":"信息表_四","id":"3_4","pid":"3"}','{"name":"信息表_五","id":"3_5","pid":"3"}','{"name":"信息表_五_一","id":"3_5_1","pid":"3_5"}','{"name":"信息表_五_二","id":"3_5_2","pid":"3_5"}','{"name":"信息表_三_一","id":"3_3_1","pid":"3_3"}','{"name":"信息表_三_二","id":"3_3_2","pid":"3_3"}','{"name":"信息表_三_三","id":"3_3_3","pid":"3_3"}');
        }else if($pId == 3){
         $array = array('{"name":"作廢表_一","id":"4_1","pid":"3"}','{"name":"作廢表_二","id":"4_2","pid":"3"}','{"name":"作廢表_三","id":"4_3","pid":"3"}');
        }
        
        echo json_encode($array);

        js代碼大部分都有注釋;詳細api可在zTree官網查看 進入官方api文檔 代碼運行需在服務器環境下運行;

        最終栗子效果圖

        以上這篇zTree jQuery 樹插件的使用(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        zTree jQuery 樹插件的使用(實例講解)

        zTree jQuery 樹插件的使用(實例講解):分享說明: 項目需要樹狀視圖形式展示后臺返回的數據;并實現點擊節點將節點信息添加到右側的ul中;待后續提交獲取使用;選擇了能夠實現異步加載節點信息的zTree插件,事實也證明這個插件足夠強大,能夠滿足幾乎所有需求;剛接觸時看了很多人的分享,結合官方api
        推薦度:
        標簽: 使用 詳解 實例
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲国产综合91精品麻豆| 成人黄页网站免费观看大全| 国产精品免费综合一区视频| 精品亚洲麻豆1区2区3区| 一级做a爱过程免费视| www国产亚洲精品久久久| 欧洲亚洲国产精华液| 成人au免费视频影院| 国产日本亚洲一区二区三区| 84pao强力永久免费高清| 久久综合日韩亚洲精品色| 亚洲免费在线观看| 亚洲美女高清一区二区三区 | 免费a级毛片在线观看| 亚洲色大成网站www久久九| 黄色网址免费大全| 亚洲一级毛片在线播放| 黄页网站在线看免费| 亚洲依依成人精品| 国产大片线上免费观看| 亚洲国产综合自在线另类| 国产精品美女午夜爽爽爽免费| 亚洲最大成人网色香蕉| 成人毛片免费观看视频在线| 亚洲日韩av无码中文| 在线观看免费精品国产| 深夜免费在线视频| 亚洲色偷偷综合亚洲AV伊人| 久青草视频在线观看免费| 亚洲女同成av人片在线观看| 2021在线观看视频精品免费| 亚洲国产成人精品久久| 在线jlzzjlzz免费播放| 美女羞羞免费视频网站| 国产亚洲情侣一区二区无码AV| 久久久久免费精品国产| 亚洲色图.com| 国产福利免费在线观看| 91视频免费观看高清观看完整| 亚洲视频网站在线观看| 嫩草视频在线免费观看|