国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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 樹插件的使用(實例講解)

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

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

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

分享說明:

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

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

外部引入資源

<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代碼

//遞歸找到所有節(jié)點(非父節(jié)點)
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 對象,主要功能:便于操作,內部參數(shù),不可修改
 treeObj:null,
 //異步請求數(shù)據(jù)配置;當父節(jié)點沒有子節(jié)點時;點擊此父節(jié)點會觸發(fā)請求
 async:{
 //打開此功能
 enable: true,
 url:"./zTreeDemoV9.0SimpleFromV10.0.php",
 type:"post",
 //發(fā)送的父級id的字段定義;如修改,遵循格式autoParam: ["id=parentId"]
 autoParam: ["id"],
 //其他需要提交的參數(shù)["name","topic","key","ss"]轉換后格式為name=topic&key=ss
 otherParam:["json",parames || 1,"test","2"],
 dataType:"json",
 contentType: "application/x-www-form-urlencoded",
 //ajax請求后的數(shù)據(jù)預處理函數(shù)
 dataFilter: function(treeId,parentNode,responseData){
 for(var i=0;i<responseData.length;i++){
 responseData[i] = JSON.parse(responseData[i])
 }
 return responseData;
 }
 },
 //數(shù)據(jù)配置
 data: {
 simpleData: {
 enable: true,
 idKey: "id", //修改默認的ID為自己的id
 pIdKey: "pid", //修改默認父級ID為自己數(shù)據(jù)的父級id
 rootPId: 0 //根節(jié)點的父節(jié)點id
 }
 },
 //視圖配置
 view: {
 //是否顯示節(jié)點前的圖標
 showIcon: false,
 //節(jié)點上a標簽的樣式
 fontCss: {
 }
 },
 //選框配置
 check: {
 //啟用復選框
 enable: true,
 //chkStyle:"radio"
 //復選框父子級選擇聯(lián)動設置
 chkboxType: { "Y": "ps", "N": "ps" }
 },
 //事件配置
 callback: {
 //點擊復選框之前的事件
 beforeCheck:function(treeId, treeNode){//如果節(jié)點是父節(jié)點,并且勾選時沒有子節(jié)點,則不允許勾選;針對父節(jié)點沒有展開,則沒有異步加載子節(jié)點,此情況禁止點擊父節(jié)點全選子節(jié)點的操作
 if(treeNode.isParent && !treeNode.children){
 return false;
 }
 },
 //回調錯誤事件
 onAsyncError: function(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown){
 alert("初始化節(jié)點數(shù)據(jù)失敗,請稍后重試");
 },
 //回調成功事件
 onAsyncSuccess: function(event, treeId, treeNode, resData){
 var zTree = $.fn.zTree.getZTreeObj("treeDemo");
 console.log("數(shù)據(jù)加載成功");
 var count = (treeNode.children.length);
 //加載成功后;在節(jié)點后面顯示此父節(jié)點下有幾個一級子節(jié)點
 $(".ztree").find("a[title="+treeNode.name+"]").find("span[class='node_name']").html(treeNode.name+"<span>("+count+")</span>");
 },
 //父節(jié)點展開時的事件
 onExpand: function(event, treeId, treeNode){
 //zTree對象
 var zTree = $.fn.zTree.getZTreeObj("treeDemo");
 //獲取點擊的id
 var nowId = treeNode.id;
 //獲取所有節(jié)點
 var allNodes = zTree.getNodes();
 //獲取點擊節(jié)點的層級
 var level = treeNode.level;
 //定義過濾函數(shù);獲取節(jié)點層級與點擊節(jié)點層級相同并且為父節(jié)點的節(jié)點
 function filter(node) {
 return (node.level == treeNode.level && node.isParent);
 }
 //獲得點擊節(jié)點同級的父節(jié)點的集合
 var sameLevelNodes = zTree.getNodesByFilter(filter);
 //遍歷同級節(jié)點集合
 for(var i=0;i<sameLevelNodes.length;i++){
 //將非被點擊父節(jié)點收起;實現(xiàn)手風琴效果
 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");
 //點擊文字關聯(lián)復選框
 //如果不是父節(jié)點,則關聯(lián),或者是父節(jié)點,但展開狀態(tài)位true是,也關聯(lián);
 if(!treeNode.isParent || (treeNode.isParent && treeNode.open)){
 zTree.checkNode(treeNode, !treeNode.checked, true);//點擊文字關聯(lián)復選框
 }
 //點擊文字展開當前節(jié)點
 zTree.expandNode(treeNode, true, true, true);
 // zTree.reAsyncChildNodes(treeNode, "refresh");//強行異步加載(存在子節(jié)點也進行加載)
 //手風琴效果;直接調用onExpand
 zTree.setting.callback.onExpand(e, treeId, treeNode);

 //點擊節(jié)點名稱和勾選節(jié)點前面的復選框邏輯相同;
 //直接在onClick里面調用onCheck函數(shù);并傳入所需參數(shù)
 zTree.setting.callback.onCheck(e, treeId, treeNode);
 },
 //點擊復選框事件
 onCheck: function(e, treeId, treeNode) {
 //獲取右側ul內所有l(wèi)i標簽;用于比較當前選擇復選框在右側是否一斤存在
 var rightLi = $("#ulright").find("li");
 //選中的是底層節(jié)點;
 if(!treeNode.isParent){
 //選中狀態(tài),加入到右側
 if(treeNode.checked){
 //遍歷右側li,如果選中的已經(jīng)存在;return
 for(var i=0;i<rightLi.length;i++){
 if($(rightLi[i]).attr("title") == treeNode.name){
 return;
 }
 }
 // 創(chuàng)建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"));
 //如果點擊的節(jié)點存在connect字段;判斷復選框狀態(tài)加入到右側ul或刪除
 if(treeNode.connect){
 //遍歷右側li,如果選中的已經(jīng)存在;return
 for(var i=0;i<rightLi.length;i++){
 if($(rightLi[i]).attr("title") == treeNode.connect){
 return;
 }
 }
 // 創(chuàng)建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"));
 }
 //將被勾選的節(jié)點背景顏色更改
 $("#treeDemo").find("a[title="+treeNode.name+"]").css("backgroundColor","#00b6ba");
 //非選中狀態(tài),刪除
 }else{
 //將右側的次節(jié)點對應的li刪除
 $("#ulright").find("li[title="+treeNode.name+"]").animate({
 width:"0%",
 height:"0"
 },400,function(){
 $("#ulright").find("li[title="+treeNode.name+"]").remove();
 })
 //取消此節(jié)點的背景顏色
 $("#treeDemo").find("a[title="+treeNode.name+"]").css("backgroundColor","");
 }
 //選中的是父節(jié)點;獲取所有子節(jié)點(非父節(jié)點),判斷復選框狀態(tài)加入到右側ul或刪除
 }else{
 //調用遞歸函數(shù);獲取所有非父級子節(jié)點數(shù)組集合
 var addNodesArray = getAllChildrenNodes(treeNode,[]);
 //是選中狀態(tài),加入到右側ul
 if(treeNode.checked){
 //定義存儲右側li的數(shù)組
 var rightLiArray = [];
 $("#ulright li").each(function(i,v){
 rightLiArray.push($(v).attr("title"))
 })
 rightLiArray = rightLiArray.slice(1);
 //遍歷勾選的數(shù)組集合
 for(var i=0;i<addNodesArray.length;i++){
 //判斷此節(jié)點是否在右側ul內;不存在則加入
 if(rightLiArray.indexOf(addNodesArray[i]) == -1){
 //創(chuàng)建li 追加li
 var addLi = $("<li title="+addNodesArray[i]+"><span>"+addNodesArray[i]+"</span>");
 addLi.animate({
 width:"100%",
 height:30
 },400)
 addLi.appendTo($("#ulright"));
 }
 //將節(jié)點背景顏色修改
 $("#treeDemo").find("a[title="+addNodesArray[i]+"]").css("backgroundColor","#00b6ba");
 }
 //是非選中狀態(tài),刪除
 }else{
 //遍歷節(jié)點,執(zhí)行刪除操作
 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的節(jié)點信息;可一次性全部加載;可試試異步請求
var zNodes = [{
 name: "數(shù)據(jù)表",//名稱
 id: 4,//id,子元素的pid
 isParent:true,//是否為父節(jié)點,默認為false
 pid:0//父節(jié)點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對象/ 配置/ 節(jié)點
 $.fn.zTree.init($("#treeDemo"), setting, zNodes);
});

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

<?php

$pId = $_POST['id'];

if($pId == 4){
 $array = array('{"name":"數(shù)據(jù)表_一","id":"1_1","pid":"0"}','{"name":"數(shù)據(jù)表_二","id":"1_2","pid":"0"}','{"name":"數(shù)據(jù)表_三","id":"1_3","pid":"0"}','{"name":"數(shù)據(jù)表_四","id":"1_4","pid":"0"}','{"name":"數(shù)據(jù)表_五","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官網(wǎng)查看 進入官方api文檔 代碼運行需在服務器環(huán)境下運行;

最終栗子效果圖

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

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

文檔

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

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

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产精品伦理久久久久 | 成年人黄国产 | 欧美日韩欧美 | 亚洲专区欧美专区 | 国产精品亚洲一区二区三区在线播放 | 久久国产精品成人免费 | 日本不卡一二三区 | 国产日韩欧美亚洲综合在线 | 欧美成人精品一区二区三区 | 国产精品一区在线播放 | 国产区在线免费观看 | 国产盗摄精品一区二区三区 | 91麻精品国产91久久久久 | 极品美女国产精品免费一区 | 亚洲精品在线免费观看视频 | 亚洲色图欧美激情 | 亚洲日韩精品欧美一区二区 | 伊人网免费视频 | 国产一区二区三区欧美精品 | 国产精品久久久久毛片 | 91av片| 在线精品亚洲欧洲第一页 | 亚洲欧美另类第一页 | 亚洲精品二三区伊人久久 | 国产日韩欧美一区 | 亚洲高清在线观看视频 | 国产在线播放一区二区 | 精品成人一区二区三区免费视频 | 国产一区二区三区成人久久片 | 久久频道毛片免费不卡片 | 欧美第五页 | 国产96在线 | 久久精品国产精品亚洲综合 | 国产精品网站在线观看 | 国产精选在线观看 | 精品久久久久久久一区二区手机版 | 国产第一页在线播放 | 国产成人99久久亚洲综合精品 | 久久久青青久久国产精品 | 国产一级片视频 | 一区二区三区精品 |