j2ee 簡單網站搭建:(十)jquery ztree 插件使用入門

為什么80%的碼農都做不了架構師?>>> ??hot3.png

《j2ee 簡單網站搭建:(一) windows 操作系統下使用 eclipse 建立 maven web 項目》
《j2ee 簡單網站搭建:(二)添加和配置 spring + spring-mvc 的 mvc 開發環境》
《j2ee 簡單網站搭建:(三)在搭建好的 spring maven web 項目中加入 mybatis 訪問數據庫》
《j2ee 簡單網站搭建:(四)將 freemaker 模板引擎作為 spring-mvc 展現層》
《j2ee 簡單網站搭建:(五)使用 jcaptcha 生成驗證碼圖片》
《j2ee 簡單網站搭建:(六)使用 hibernate validation 實現 domain 層實體類驗證》
《j2ee 簡單網站搭建:(七)使用 shiro 結合 jcaptcha 實現用戶驗證登錄》
《j2ee 簡單網站搭建:(八)使用 jquery-validate 實現頁面驗證入門》
《j2ee 簡單網站搭建:(九)jquery datatables + jquery ui dialog 插件使用入門》
《j2ee 簡單網站搭建:(十)jquery ztree 插件使用入門》
《j2ee 簡單網站搭建:(十一)ckeditor 控件使用入門》

ztree 版本 v3.5.28

一 從官方網站下載 ztree 的 css 和 js 文件,引入項目的 web 目錄中
網站地址 http://www.treejs.cn/v3/main.php#_zTreeInfo

二 在 html 頁面 <head> 標簽中加入 css 文件

<!-- zTree CSS -->
<link rel="stylesheet" href="你的文件路徑/metroStyle.css" type="text/css">

三 在 html 頁面 <body> 標簽內添加綁定 ztree 插件的 ul 標簽,本例中 ul 標簽的 id 設置為 categorytree

<ul id="categorytree" class="ztree" style="width: 100%"></ul>

四 在 html 頁面 </body> 標簽內添加綁定 ztree 插件 js 文件以及 javascript 代碼

<script type="text/javascript" src="你的文件路徑/jquery.ztree.core.min.js"></script>
<script type="text/javascript" src="你的文件路徑/jquery.ztree.excheck.js"></script>
<script type="text/javascript" src=你的文件路徑/jquery.ztree.exedit.js"></script><!-- Page-Level Demo Scripts - Tables - Use for reference -->
<script>var zTree = $.fn.zTree.getZTreeObj("categorytree"); // 獲得樹對象// zTree 的參數配置,深入使用請參考 API 文檔(setting 配置詳解)var setting = {view : {selectedMulti: false, // 取消多選addHoverDom: addHoverDom, // 鼠標選中后顯示增、改按鈕removeHoverDom: removeHoverDom // 鼠標移除后顯示增、改按鈕},data :{ // 設置節點的屬性值以及從服務端傳送過來的數據向節點綁定的參數值simpleData : {enable : true,idKey : 'id', // 綁定服務端傳過來的 id 參數pIdKey : 'pid', // 綁定服務端傳過來的 pid 參數rootPid : 0, // 根節點的父節點 id 值status : 'status' // 綁定服務端傳過來的 status 參數}},edit : { // 對節點編輯時進行的設置enable : true, // 允許編輯showRemoveBtn : false, // 是否顯示 刪除節點 按鈕showRenameBtn : true, // 是否顯示 修改節點內容 按鈕renameTitle : "修改", // 如果顯示 修改節點內容 按鈕后,按鈕上的文字顯示啥editNameSelectAll : true, // 編輯節點名稱的時候是否對名稱文字全選// drag : { // 是否允許節點拖拽放置、復制、移動// ? ? autoExpandTrigger : false,// ? ? isCopy : false,// ? ? isMove : false// }},callback: { // 設置所有的回調函數onRename: onRename, // 修改時調用onDrop: onDrop // 拖拽}};// zTree 的數據屬性,深入使用請參考 API 文檔(zTreeNode 節點數據詳解)$(document).ready(function() {var zNodes;$.ajax({ // 需要調用同步方法,因此不能使用post方法,此處加載整棵樹type:"POST",async:false,url:"get_category_tree", // 服務端獲得數據的方法dataType : "json",data:null,success:function(result){ // 調用成功對節點進行設置if (result != null && result.status == true)zNodes = result.data;}});zTree = $.fn.zTree.init($("#categorytree"), setting, zNodes); // 初始化樹對象});function addHoverDom(treeId, treeNode) { // 在鼠標移動到節點上方時顯示對節點的操作按鈕并對按鈕綁定處理方法var sObj = $("#" + treeNode.tId + "_span"); // 獲得鼠標所在的節點對象if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0 || $("#startBtn_"+treeNode.tId).length>0) return; // 如果鼠標所在的節點正在編輯或者添加按鈕已存在則以下不執行var addStr = "<span class='button add' id='addBtn_" + treeNode.tId+ "' title='添加' onfocus='this.blur();'></span>"; // 動態生成新增按鈕var startStr = "<span class='button start' id='startBtn_" + treeNode.tId+ "' title='啟用' onfocus='this.blur();'></span>"; // 動態生成啟用按鈕var stopStr = "<span class='button stop' id='stopBtn_" + treeNode.tId+ "' title='停用' onfocus='this.blur();'></span>"; // 動態生成停用按鈕var statusStr = "<span id='statusSpan_" + treeNode.tId + "' title='狀態'>[" + (treeNode.status ? "啟用" : "停用") + "]</span>"; // 動態生成停用按鈕sObj.after(stopStr).after(startStr).after(addStr).after(statusStr); // 在鼠標所在節點后顯示添加按鈕、啟動按鈕和其它操作按鈕// - - - 新增按鈕及處理方法 - - - //var addBtn = $("#addBtn_"+treeNode.tId); // 獲得添加按鈕對象并綁定點擊事件if (addBtn) addBtn.bind("click", function(){ // 添加按鈕點擊后的操作var newNodeName = Math.round(Math.random()* 99999999).toString(); // 新增的節點名稱$.ajax({ // 需要調用同步方法,因此不能使用post方法,這里需要添加節點type : "POST",async : false,url : "add_tree_node",dataType : "json",data : {name: newNodeName, parentId: treeNode.id, parentName: treeNode.name},success:function(result){if (result != null && result.status == true) {$('#div_alert').text("節點添加成功!").prop('class', 'alert alert-success'); // 設置提示信息并改變提示框樣式為成功// 返回值為數據庫中的自增IDzTree.addNodes(treeNode, {id: result.data, pId: treeNode.id, name: newNodeName, status: 1}); // 在ztree中添加節點,因為在設置中將treeNode 的name設置為nameWithStatus,因此這里要傳這個名稱}else $('#div_alert').text("節點添加失敗!").prop('class', 'alert alert-warning'); // 設置提示信息并改變提示框樣式為警告}});return false;});function removeHoverDom(treeId, treeNode) { // 鼠標移除后清除臨時生成的對象$("#addBtn_"+treeNode.tId).unbind().remove(); // 鼠標移動后刪除添加按鈕所有內容$("#startBtn_"+treeNode.tId).unbind().remove(); // 鼠標移動后刪除啟用按鈕所有內容$("#stopBtn_"+treeNode.tId).unbind().remove(); // 鼠標移動后刪除停用按鈕所有內容$("#statusSpan_"+treeNode.tId).unbind().remove(); // 鼠標移動后刪除狀態框內容}function onRename(e, treeId, treeNode, isCancel) { // 修改名稱var parentNode = treeNode.getParentNode();$.ajax({ // 需要調用同步方法,因此不能使用post方法,這里需要添加節點type : "POST",async : false,url : "modify",dataType : "json",data : {id: treeNode.id, name: treeNode.name, parentId: (parentNode != null ? parentNode.id : 0), parentName: (parentNode != null ? parentNode.name : "[- 無 -]")},success:function(result){if (result != null && result.status == true) {$('#div_alert').text("修改成功!").prop('class', 'alert alert-success'); // 設置提示信息并改變提示框樣式為成功isCancel = false;}else { ?// 設置提示信息并改變提示框樣式為警告$('#div_alert').text("修改失敗!").prop('class', 'alert alert-warning');isCancel = true;}}});return isCancel;}function onDrop(event, treeId, treeNodes, targetNode, moveType) { // 調整樹形節點的位置$.ajax({ // 需要調用同步方法,因此不能使用post方法,這里需要添加節點type : "POST",async : false,url : "modify",dataType : "json",data : {id: treeNodes[0].id, name: treeNodes[0].name, parentId: (targetNode != null ? targetNode.id : 0), parentName: (targetNode != null ? targetNode.name : "[- 無 -]")},success:function(result){if (result != null && result.status == true) {$('#div_alert').text("位置調整修改成功!").prop('class', 'alert alert-success'); // 設置提示信息并改變提示框樣式為成}else { ?// 設置提示信息并改變提示框樣式為警告$('#div_alert').text("位置調整修改失敗!").prop('class', 'alert alert-warning');}}});};
</script>

?

轉載于:https://my.oschina.net/ioooi/blog/1525745

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257619.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257619.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257619.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實習報告

實習時間&#xff1a;2016/2/18-2016/2/24 實習地點&#xff1a;陜西省米脂縣公安局網絡警察大隊     實習報告&#xff1a; 如今的社會&#xff0c;網絡高度發展&#xff0c;一些人隨著時代的潮流利用網絡發家致富&#xff0c;而有些人利用網絡監管的一些漏洞&#xff0c;…

java utf 8 轉unicode_java 在Unicode和UTF-8之間轉換

/*** utf-8 轉換成 unicode* author fanhui* 2007-3-15* param inStr* return*/public static String utf8ToUnicode(String inStr) {char[] myBuffer inStr.toCharArray();StringBuffer sb new StringBuffer();for (int i 0; i < inStr.length(); i) {UnicodeBlock ub …

Android成長日記-使用GridView顯示多行數據

本節將實現以下效果 Ps&#xff1a;看起來很不錯的樣子吧&#xff0c;而且很像九宮格/se ----------------------------------------------------------------------- 下面進入正題[s1] &#xff1a; Step 1&#xff1a;新建Layout&#xff0c;里面創建GridView <GridView a…

奪命雷公狗---微信開發39----微信語言識別接口1

語音識別接口的基本介紹 注意&#xff1a; 由于客戶端緩存&#xff0c;開發者開啟或者關閉語音識別功能&#xff0c;對新關注者立即生效&#xff0c;對已關注用戶需要24小時生效&#xff0c;開發者可以從新關注帳號進行測試。 我們可以在測試號下方的體驗接口權限表里面找到“接…

Codeforces 803E--Roma and Poker (DP)

原題鏈接&#xff1a;http://codeforces.com/problemset/problem/803/E 題意&#xff1a;給一個n長度的字符串&#xff0c;其中?可以替換成D、W、L中的任意一種&#xff0c;D等價于0, W等價于1、L等價于-1。輸出所有?被替換掉后&#xff0c;W和L的數目之差為k&#xff0c;且任…

java構造塊_java中的靜態代碼塊、構造代碼塊、構造方法詳解

運行下面這段代碼&#xff0c;觀察其結果&#xff1a;package com.test;public class HelloB extends HelloA {public HelloB() {}{System.out.println("Im B class");}static {System.out.println("static B");}public static void main(String[] args) {…

推薦一個不錯的 Chrome 插件,百變皮膚,還可以去廣告

今天在這里給大家推薦一個非常棒&#xff0c;非常不錯的 Chrome 插件&#xff0c;功能實在是強大又好玩&#xff0c;讓你在瀏覽器中可以如孫悟空一樣72變&#xff0c;再不濟&#xff0c;如果你不會用&#xff0c;不會自定義寫 CSS 樣式&#xff0c;也能夠做到如豬八戒般 36 變。…

【轉】DB2 常用命令

1、 打開命令行窗口   #db2cmd 2、 打開控制中心   # db2cmd db2cc 3、 打開命令編輯器  db2cmd db2ce 操作數據庫命令 4、 啟動數據庫實例   #db2start 5、 停止數據庫實例   #db2stop  如果你不能停止數據庫由于激活的連接&#xff0c;在運行db2stop前執行db2 force ap…

c#調用R

R.NET使用文檔 介紹 本頁面涉及R.NET1.5.13。 1.5.13版本在功能上等同于1.5.12&#xff0c;但可作為一個包在NuGet.org上獲得。 R.NET使.NET框架與R統計語言在同一進程進行互操作。 R.NET需要.NET Framework 4的并有R環境中安裝的本地的DLL。您可以使用R.NET用在.NET的任何語言…

java applet 文本框_Java Applet 文本框 TextField 小例 | 學步園

一個Java Applet程序中必須有一個類是Applet類的子類&#xff0c;成為該子類是Java Applet的主類&#xff0c; 并且必須是public class。 Applet類是包java.applet中的一個類&#xff0c; 同時它還是包java.awt中Container(容器)類的子類。因此Java Applet的主類的實例是一個容…

python界面工具pyqt基礎教程

這里有一份很詳細的中文翻譯供我們學習pyqt&#xff0c;很適合初學者和中級學者&#xff0c;直接丟傳送門&#xff0c;不多說 http://www.qaulau.com/books/PyQt4_Tutorial/introduction.html轉載于:https://www.cnblogs.com/semishigure/p/7451689.html

博客園客戶端(睡睡版iphone)源碼

1.關于 https://itunes.apple.com/us/app/shui-shui-bo-ke-yuan/id512394144?ls1&mt8 項目目前為V3.0版&#xff0c;也是我開發的最新版&#xff0c;目前已無法在appstore下載&#xff0c;項目介紹&#xff1a;http://www.cnblogs.com/bandy/p/3509482.html 2.現狀 目前本…

Spring MVC不要在@Service bean中保存狀態

先看這么一段代碼&#xff1a; Service public class AccountService {private String message;public void foo1() {if (true) {this.message "a";} else {this.message "b";}}public void foo2() {// 改動this.message的代碼...// ... ...} }假設你打算…

java class 關鍵字_java關鍵字及其作用

一、 關鍵字總覽:訪問控制privateprotectedpublic類,方法和變量修飾符abstractclassextendsfinalimplementsinterfacenativenewstaticstrictfpsynchronizedtransientvolatile程序控制breakcontinuereturndowhileifelseforinstanceofswitchcasedefault錯誤處理trycatchthrowthro…

3.過濾數據 ---SQL

一、使用WHERE子句 SELECT prod_name, prod_price FROM Products WHERE prod_price 3.49; 輸出▼ prod_name prod_price ------------------- ---------- Fish bean bag toy 3.49 Bird bean bag toy 3.49 Rabbit bean bag toy 3.49 分析▼ 這條語句從products表中檢索兩個列&a…

IOS-C語言第8天,Struct (結構體)

轉載于:https://www.cnblogs.com/xiangrongsu/p/4309160.html

Win2D 入門教程 VB 中文版 - 防止內存泄漏

避免內存泄漏 本文從微軟官方文檔翻譯 http://microsoft.github.io/Win2D/html/RefCycles.htm 如果文檔有問題&#xff0c;可以在 https://github.com/Nukepayload2/Win2dDocVB發 Issue&#xff0c;也可以直接回復。 當在托管的 XAML 應用程序中使用 Win2D 控件&#xff0c;需要…

java concurrent 鎖_java并發機制鎖的類型和實現

synchronized 和 volatile&#xff0c;是最基礎的兩個鎖&#xff01;volatile是輕量級鎖&#xff0c;它在多核處理器開發中保證了共享變量的可見性。即當一個線程修改一個共享變量時&#xff0c;其他線程能夠讀到這個修改的值。它比syncronized使用和成本更低。要說volatile的實…

JAXB和XStream比較

這兩東東本質上是有差別的&#xff0c;JAXB稱為OX binding工具&#xff0c;XStream應該算序列化工具&#xff0c;但OX binding工具也會marshall和unmarshall&#xff0c;所以包含了序列化這一部分。序列化工具不一定需要提供binding的功能。既然都玩序列化&#xff0c;那就簡單…

【起航計劃 011】2015 起航計劃 Android APIDemo的魔鬼步伐 10 App-Activity-Reorder Activities 后退棧 Intent FLAG...

Reorder Activities 示例有四個相關的Activitives: ReorderOnLaunch, ReorderTwo,ReorderThree, ReorderFour。其中ReorderOnLaunch為主Activity&#xff0c;ReorderOnLaunch啟動ReorderTwo &#xff0c;ReorderTwo啟動 ReorderThree&#xff0c;ReorderThree啟動 ReorderFour。…