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

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
當前位置: 首頁 - 科技 - 知識百科 - 正文

jQuery使用zTree插件實現(xiàn)可拖拽的樹示例

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

jQuery使用zTree插件實現(xiàn)可拖拽的樹示例

jQuery使用zTree插件實現(xiàn)可拖拽的樹示例:在目前接觸到的樹插件中,我覺得zTree比較簡單,也容易上手。有一次業(yè)務需求是將某對象分組樹上的對象可以隨意拖拽,相當于改變了對象的分組,因此我用到了zTree,對其進行了一些列學習。 首先下載zTree所需的相關(guān)包,附上官方下載連接:zTree下載,引
推薦度:
導讀jQuery使用zTree插件實現(xiàn)可拖拽的樹示例:在目前接觸到的樹插件中,我覺得zTree比較簡單,也容易上手。有一次業(yè)務需求是將某對象分組樹上的對象可以隨意拖拽,相當于改變了對象的分組,因此我用到了zTree,對其進行了一些列學習。 首先下載zTree所需的相關(guān)包,附上官方下載連接:zTree下載,引

在目前接觸到的樹插件中,我覺得zTree比較簡單,也容易上手。有一次業(yè)務需求是將某對象分組樹上的對象可以隨意拖拽,相當于改變了對象的分組,因此我用到了zTree,對其進行了一些列學習。

 首先下載zTree所需的相關(guān)包,附上官方下載連接:zTree下載,引入相關(guān)文件后就可以進行zTree的構(gòu)建了。首先在頁面上加ul標簽,然后為樹加上id,calss為ztree,前端頁面就完成了。

注意:下面所有的代碼是根據(jù)我自己的需求寫的,且不完整,主要參考配置流程和回調(diào)函數(shù)的使用即可。

前端頁面:

 <ul id="modelTree" class="ztree"></ul> 

然后寫JavaScript,寫之前一定要多多閱讀zTree的官方API,上面已經(jīng)解釋的很詳細了,只需要照著一步一步做即可。首先就是配置setting,這個是整個zTree的核心配置,我這里除了基本配置外,因為需要拖拽功能,因此配置了edit,其中enable一定要設為true,其他參數(shù)看需求配置。callback中也配置相關(guān)的回調(diào)函數(shù)。

 setting配置:

 var setting = {
 data: {
 key:{
 name:'nodeName'
 },
 simpleData: {
 enable: true,
 idKey: 'nodeId',
 pIdKey: 'parentNodeId'
 },
 keep:{
 leaf:true,
 parent:true,
 }
 },
 edit:{
 drag:{
 isCopy: false,
 isMove: true,
 prev: true,
 next: true,
 inner: true,
 autoOpenTime: 0,
 minMoveSize: 10


 },
 enable:true,
 editNameSelectAll: true,
 removeTitle: "刪除節(jié)點",
 renameTitle: "編輯節(jié)點名稱",
 showRemoveBtn: false,
 showRenameBtn: false,
 },

 callback: {
 beforeClick: beforeClick,

 beforeDrag:beforeDrag,
 beforeDragOpen:beforeDragOpen,
 beforeDrop:beforeDrop,
 onDrag:onDr},
}; 

 配置完setting,將各個回調(diào)函數(shù)補充完整,根據(jù)需求來定里面的內(nèi)容,我這里根據(jù)父節(jié)點的類型以及一些其他一些規(guī)則對能否拖拽,拖拽能否成功進行了相應的限制。

 回調(diào)函數(shù):

 //拖拽之前調(diào)用的函數(shù)
function beforeDrag(treeId,treeNode){
 if(treeNode[0].nodeType == 'GROUP'){
 return false;
 }
 if(treeNode.parentId == null && treeNode.modelType !=null){
 return true;
 }
 var node = treeNode[0].getParentNode();
 var modelType = treeNode[0].getParentNode().modelType;
 if(modelType == 'INTERFACE'){
 return false;
 }else {
 return true;
 }
}

//預留被拖拽的回調(diào)函數(shù)
function onDrag(event, treeId, treeNode){
 //暫時沒用到
}

//拖拽移動到展開父節(jié)點之前調(diào)用的函數(shù)
function beforeDragOpen(){
 return true;
}

//拖拽操作結(jié)束之前調(diào)用的函數(shù)
function beforeDrop(treeId, treeNode, targetNode, moveType){
 BRS.fileLoading('show');
 var result = false;
 if(targetNode == null || (moveType != "inner" && !targetNode.parentTId)){
 BRS.fileLoading('hide');
 return false;
 }
 if(targetNode.modelType != null){
 if((targetNode.modelType == 'INTERFACE' && moveType == 'inner') || targetNode.getParentNode().modelType == 'INTERFACE'){
 BRS.fileLoading('hide');
 return false;
 }
 }
 var objDetail = {
 url: '/api/model/' + treeNode[0].id,
 async:false,
 }
 jsonAjax(objDetail,function (detailData) {
 var data = {
 nodeType : detailData.nodeType,
 code : detailData.code,
 name : detailData.name,
 builtIn : detailData.builtIn,
 iconUrl : detailData.iconUrl,
 modelType : detailData.modelType.code,
 interfaceModelId : detailData.interfaceModelId,
 };
 data.id = treeNode[0].id;
 if(moveType != 'inner'){
 data.groupId = targetNode.parentId;
 }else{
 data.groupId = targetNode.id;
 }
 var obj = {
 type:"put",
 showSuccessMsg: false,
 param: {
 params:JSON.stringify(data)
 },
 async:false,
 url: '/api/model',
 }
 jsonAjax(obj,function(updateData){
 if(updateData != null){
 result = true;
 ing('hide');
 return result;
}

//預留拖拽結(jié)束的回調(diào)函數(shù)
function onDrop(event, treeId, treeNode, targetNode, moveType){
 befod('hide');
 return result;
}

//預留拖拽結(jié)束的回調(diào)函數(shù)
function onDrop(event, treeId, treeNode, targetNode, moveType){
 beforeClick(treeId, treeNode[0]);
} 

上面的設置和相關(guān)函數(shù)完成以后,就可以調(diào)用zTree的初始化方法,通過Ajax請求回來的參數(shù)去填充我們所需要的樹了。

// 初始化對象分組樹
 var treeObj = $("#modelTree");
 $.fn.zTree.init(treeObj, setting, data);
 zTree_Menu = $.fn.zTree.getZTreeObj("modelTree"); 

最后形成的樹(可以拖拽的):

 

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

文檔

jQuery使用zTree插件實現(xiàn)可拖拽的樹示例

jQuery使用zTree插件實現(xiàn)可拖拽的樹示例:在目前接觸到的樹插件中,我覺得zTree比較簡單,也容易上手。有一次業(yè)務需求是將某對象分組樹上的對象可以隨意拖拽,相當于改變了對象的分組,因此我用到了zTree,對其進行了一些列學習。 首先下載zTree所需的相關(guān)包,附上官方下載連接:zTree下載,引
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 精品国产欧美一区二区 | 国产免费网| 亚欧成人毛片一区二区三区四区 | 国产 欧美 在线 | 啪啪网免费 | 国产视频一区二区在线播放 | 国产亚洲一区二区三区不卡 | 亚洲欧美视屏 | 日韩高清在线观看 | 明星国产欧美日韩在线观看 | 欧美人xxx | 国产成人久久精品亚洲小说 | 又粗又硬又大又深又爽动态图 | 亚洲国产综合久久精品 | 亚洲欧美国产精品 | 欧美日韩视频 | 精品欧美一区二区三区精品久久 | 久久亚洲精选 | 一道精品视频一区二区三区男同 | 日韩国产欧美一区二区三区在线 | 亚洲欧洲另类 | 久久久国产这里有的是精品 | 国产精品视频久久久久久 | 免费在线观看一区 | 欧美色第一页 | 国产精品欧美韩国日本久久 | 亚洲精彩视频在线观看 | 日本一二三区高清 | 国产成人精品一区二区三在线观看 | 国产精品久久久久免费 | 亚洲精品在线免费看 | 人与动交xxx | 国产精品资源在线观看 | 国产精品亚洲一区二区三区 | 99热成人精品国产免国语的 | 99免费在线视频 | 一区二区不卡久久精品 | 看全黄大色大黄美女 | 国产网站在线 | 人禽性动交异族另类 | 亚洲图片在线观看 |