首页 > wdtree简介、使用

wdtree简介、使用

  我接触过好多jquery插件的tree,比如dwz的tree,ztree,dtree,以及今天我要介绍的wdtree。dwz的tree,我就不多说了,不推荐使用。dtree要是仅作为显示的关系树来说还是不错的。ztree功能很强大,极力推荐。今天的wdTree类似ztree的一个子功能,如果仅是做权限树类似的树状结构的话,我觉得wdtree是一个极好的选择。

  首先介绍一下wdTree,以下内容摘自官网(http://www.web-delicious.com/jquery-plugins/)

  wdTree is lightweight jQuery plugin for present tree with nested check boxes. Features highlighted:

  • parents/children checking
  • lazy load from database
  • configurable node attributes

总结:wdTree是一个轻量级jQuery插件用于展示带有复选框的树形控件。支持从数据库懒加载节点,可以配置节点属性。

 1.简介(官方文档API)

Config

cascadecheckcbiconpathclicktoggledata
showcheckthemeurl

cascadecheck

Boolean   Whether node being seleted leads to parent/sub node being selected.

cbiconpath

String   Checkbox image path.

clicktoggle

String   Whether to toggle node when node clicked.

data

Object   Tree theme. Three themes provided. 'bbit-tree-lines' ,'bbit-tree-no-lines' and 'bbit-tree-arrows'.

 1 data:[{
 2     id:"node1", //node id
 3     text:"node 1", //node text for display.
 4     value:"1", //node value
 5     showcheck:false, //whether to show checkbox
 6     checkstate:0, //Checkbox checking state. 0 for unchecked, 1 for partial checked, 2 for checked.
 7     hasChildren:true, //If hasChildren and complete set to true, and ChildNodes is empty, tree will request server to get sub node.
 8      isexpand:false, //Expand or collapse.
 9     complete:false, //See hasChildren.
10      ChildNodes:[] // child nodes
11 }]

 

showcheck

Boolean   Whether to show check box or not.

theme

String   Tree theme. Three themes provided. 'bbit-tree-lines' ,'bbit-tree-no-lines' and 'bbit-tree-arrows'.

url

String   Url for child nodes retrieving.

Events

oncheckboxclickonnodeclick

oncheckboxclick(  tree,  item,  status)

Fired when check box is clicked on.

ObjecttreeThis tree object.
ObjectitemNode item clicked on.
Numberstatus1 for checked, 0 for unchecked.

onnodeclick(  tree,  item)

Fired when a node is clicked on.

ObjecttreeThis tree object.
ObjectitemNdde item clicked on.

 

 官方文档还是比较简洁的,我的语言组织能力有限,感觉还是英文的文档看着容易理解一点(翻译成中文太别扭了)。

2.demo

 需求操作:显示权限树,并做到级联勾选操作,cascadecheck属性貌似不好用,在仔细看了源码之后,发现.getTSNs(true)这个方法可以实现该需求。

源码:

jquery.tree.js

 

 1  function getck(items, c, fn) {
 2             for (var i = 0, l = items.length; i < l; i++) {
 3                 (items[i].showcheck == true && items[i].checkstate == 1) && c.push(fn(items[i]));
 4                 if (items[i].ChildNodes != null && items[i].ChildNodes.length > 0) {
 5                     getck(items[i].ChildNodes, c, fn);
 6                 }
 7             }
 8         }
 9         function getCkAndHalfCk(items, c, fn) {//获取半勾选和全勾选状态的节点
10             for (var i = 0, l = items.length; i < l; i++) {
11                 (items[i].showcheck == true && (items[i].checkstate == 1 || items[i].checkstate == 2)) && c.push(fn(items[i]));
12                 if (items[i].ChildNodes != null && items[i].ChildNodes.length > 0) {
13                     getCkAndHalfCk(items[i].ChildNodes, c, fn);
14                 }
15             }
16         }
17         me[0].t = {
18             getSelectedNodes: function(gethalfchecknode) {
19                 var s = [];
20                 if (gethalfchecknode) {
21                     getCkAndHalfCk(treenodes, s, function(item) { return item; });
22                 }
23                 else {
24                     getck(treenodes, s, function(item) { return item; });
25                 }
26                 return s;
27             },
28             getSelectedValues: function() {
29                 var s = [];
30                 getck(treenodes, s, function(item) { return item.value; });
31                 return s;
32             },
33             getCurrentItem: function() {
34                 return dfop.citem;
35             },
36             reflash: function(itemOrItemId) {
37                 var id;
38                 if (typeof (itemOrItemId) == "string") {
39                     id = itemOrItemId;
40                 }
41                 else {
42                     id = itemOrItemId.id;
43                 }
44                 reflash(id);
45             }
46         };
47         return me;
48     };
49     //get all checked nodes, and put them into array. no hierarchy
50     $.fn.getCheckedNodes = function() {
51         if (this[0].t) {
52             return this[0].t.getSelectedValues();
53         }
54         return null;
55     };
56     $.fn.getTSNs = function(gethalfchecknode) {
57         if (this[0].t) {
58             return this[0].t.getSelectedNodes(gethalfchecknode);
59         }
60         return null;
61     };
62     $.fn.getCurrentNode = function() {
63         if (this[0].t) {
64             return this[0].t.getCurrentItem();
65         }
66         return null;
67     };
68     $.fn.reflash = function(ItemOrItemId) {
69         if (this[0].t) {
70             return this[0].t.reflash(ItemOrItemId);
71         }
72     };

 ·····我这下面的例子简单的使用了一下这个wdtree,感觉还可以。

  1 <%@page import="cn.gx.ddyzc.domain.GxddyzcFunctionBase"%>
  2 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  3 <%@ include file="/WEB-INF/tagLibInclude.inc.jsp"%>
  4 <%
  5     List functionList = (List)request.getAttribute("functionList"); 
  6 Map functionIdMap = (Map)request.getAttribute("functionIdMap");
  7 %>
  8 
  9 
 10 
 11 
 12  13     type="text/css" />
 14 
 16 
 17 
 18 
 94 
 95 
 96     
97 method="post" 98 οnsubmit="return validateCallback(this, dialogAjaxDone);"> 99 <input 100 name="roleId" value="${roleId }" type="hidden" /> <input 101 name="perId" id='perId' type="hidden" /> 102
103
104
class="tabsContent" 105 style="background-color: #fff;padding-left:18%;" layoutH="50"> 106 <div 107 style=" width: 450px; height: 450px; overflow: auto; border: #ededed 1px solid;"> 108
109
110 111
112
class="formBar" style="border-width: 1px;"> 113
    114
  • 115
    class="buttonActive"> 116
    class="buttonContent"> 117 118
    119
  • 120
  • 121
    class="button"> 122
    class="buttonContent"> 123 124
    125
  • 126
127
128
129 130

这个树是很久以前用的了,这次给整理下来留着以后复习~~,下次有时间把ztree那个demo整理下来。晚安

2014-01-06 22:46:03

转载于:https://www.cnblogs.com/lucky2u/p/3504312.html

更多相关:

  •   /*禁止缩放safari浏览器*/ var scale = {disabledSafari: function () {/* 阻止双击放大*/var lastTouchEnd = 0;document.addEventListener("touchstart", function (event) {if (event.touch...

  •   $g.$utils = {/**舒工Ajax-lite 1.0 -- 最精简的ajax自定义访问方法*/ajax: function (o) {var p = o.post, g = o.get, d = p.data, a = p.async, J = 'json', j = p[J], s = g.success, e =...

  •   Sg.js框架核心概念: 1)所有变量、方法、类对象全部都是从属于$g主树,由$g分支出很多$g.变量名、$g.方法、$g.对象id、$g.类;2)获取控件内部属性必须使用公开的get方法获取,禁止直接用访问内部变量方式来获取控件内部变量、属性值;3)修改控件内部属性、绑定方法等都必须使用公开的set方法来操作,禁止直接用访问...

  •  一、ios header导航栏被推起解决方法 1 设置弹出软键盘时自动改变webview的高度 plus.webview.currentWebview().setStyle({ softinputMode: "adjustResize" // 弹出软键盘时自动改变webview的高度 }); 2 增加样式 html...

  • 前端发送Ajax请求到服务器,服务器返回数据这一过程,因原因不同耗时长短也有差别,且这段时间内页面显示空白。如何优化这段时间内的交互体验,以及长时间内服务器仍未返回数据这一问题,是我们开发中不容忽视的重点。 常见的做法是: 1、设置超时时间,一旦时间超过设定值,便终止请求;2、页面内容加载之前,手动增加一个 loading 层。 代码...

  •