jquery.ztree增加checkbox选项(可选以及不可选)

有一棵树,我们只需要其中几个节点可以通过勾选前面checkbox来对其进行操作,且这个操作需要动态执行。应该如何实现呢?

默认情况下zTree树节点无checkbox选择框==========》动态设置每一个节点均有选择框checkbox

面对这样一个需求,如果我们使用的是zTree树控件,那么将会变得非常地简单。

面对这样一个需求,如果我们使用的是zTree树控件,那么将会变得非常地简单。

1、引入ztree树相关的js文件


1. <link rel="stylesheet" href="../../../css/demo.css" type="text/css">
2. <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
3. <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
4. <script type="text/javascript" src="../../../js/jquery.ztree.core-3.5.js"></script>
5. <script type="text/javascript" src="../../../js/jquery.ztree.excheck-3.5.js"></script>


注意excheck.js文件是一定要引入的,要不然会导致节点前的checkbox无法显示和操作。

2、默认设置每一个节点的nocheck属性值为true

nocheck表示无checkbox选择框,属性值设置为true,表示不会显示节点前面的checkbox选择框。所以需要我们在提供节点数据给zTree树控件之前设置好每一个节点的nocheck值为true,示例数据形如:


01. //ztree用于初始化的静态数据       
02. var zNodes = [
03. { id: 1, pId: 0, name: "随意勾选 1", nocheck: true },
04. { id: 11, pId: 1, name: "随意勾选 1-1", nocheck: true },
05. { id: 111, pId: 11, name: "无 checkbox 1-1-1", nocheck: true },
06. { id: 112, pId: 11, name: "随意勾选 1-1-2", nocheck: true },
07. { id: 12, pId: 1, name: "无 checkbox 1-2", nocheck: true },
08. { id: 2, pId: 0, name: "随意勾选 2", nocheck: true },
09. ];


3、动态设置节点前显示checkbox

想要让某个节点显示checkbox选择框,就必须要更新其nocheck属性值为false即可。核心方法如下所示:


01. //过滤节点的机制 直接return node表示不做任何过滤
02. function filter(node) {
03. return node;
04. }
05.  
06. ///动态设置zTree的所有节点有checkbox
07. function DynamicUpdateNodeCheck() {
08. var zTree = $.fn.zTree.getZTreeObj("treeDemo");
09. //根据过滤机制获得zTree的所有节点           
10. var nodes = zTree.getNodesByFilter(filter);
11. //遍历每一个节点然后动态更新nocheck属性值
12. for (var i = 0; i < nodes.length; i++) {
13. var node = nodes[i];
14. node.nocheck = false//表示显示checkbox
15. zTree.updateNode(node);
16. }
17. }


完整示例代码如下所示:

[html]  view plain
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <title>ZTREE DEMO - 默认zTree几点无checkbox动态设置节点checkbox出现</title>  
  5.     <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  6.     <link rel="stylesheet" href="../../../css/demo.css" type="text/css">  
  7.     <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">  
  8.     <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>  
  9.     <script type="text/javascript" src="../../../js/jquery.ztree.core-3.5.js"></script>  
  10.     <script type="text/javascript" src="../../../js/jquery.ztree.excheck-3.5.js"></script>  
  11.     <script type="text/javascript">  
  12.         <!--  
  13.         var setting = {  
  14.             check: {  
  15.                 enable: true,  
  16.                 nocheckInherit: false  
  17.             },  
  18.             data: {  
  19.                 simpleData: {  
  20.                     enable: true  
  21.                 }  
  22.             }  
  23.         };  
  24.         //ztree用于初始化的静态数据          
  25.         var zNodes = [  
  26.             { id: 1, pId: 0, name: "随意勾选 1", nocheck: true },  
  27.             { id: 11, pId: 1, name: "随意勾选 1-1", nocheck: true },  
  28.             { id: 111, pId: 11, name: "无 checkbox 1-1-1", nocheck: true },  
  29.             { id: 112, pId: 11, name: "随意勾选 1-1-2", nocheck: true },  
  30.             { id: 12, pId: 1, name: "无 checkbox 1-2", nocheck: true },  
  31.             { id: 2, pId: 0, name: "随意勾选 2", nocheck: true },  
  32.         ];  
  33.   
  34.         //过滤节点的机制 直接return node表示不做任何过滤  
  35.         function filter(node) {  
  36.             return node;  
  37.         }  
  38.   
  39.         ///动态设置zTree的所有节点有checkbox  
  40.         function DynamicUpdateNodeCheck() {  
  41.             var zTree = $.fn.zTree.getZTreeObj("treeDemo");  
  42.             //根据过滤机制获得zTree的所有节点              
  43.             var nodes = zTree.getNodesByFilter(filter);  
  44.             //遍历每一个节点然后动态更新nocheck属性值  
  45.             for (var i = 0; i < nodes.length; i++) {  
  46.                 var node = nodes[i];  
  47.                 node.nocheck = false; //表示显示checkbox  
  48.                 zTree.updateNode(node);  
  49.             }  
  50.         }  
  51.   
  52.         ///页面加载后初始化zTree数据且默认展开所有节点  
  53.         $(document).ready(function () {  
  54.             $.fn.zTree.init($("#treeDemo"), setting, zNodes).expandAll(true);  
  55.         });  
  56.         //-->  
  57.     </script>  
  58. </head>  
  59. <body>  
  60.     <h1>  
  61.         Checkbox nocheck 演示</h1>  
  62.     <div class="content_wrap">  
  63.         <div class="zTreeDemoBackground left">  
  64.             <ul id="treeDemo" class="ztree">  
  65.             </ul>  
  66.         </div>  
  67.         <div class="right">  
  68.             <p>  
  69.                 默认情况下设置任何节点无checkbox选择框,需要配置每一个节点的nocheck属性为true即可。</p>  
  70.             <p>  
  71.                 zTree加载完成后通过updateNode(node)方法动态更新节点的nocheck属性为false,则节点将会显示checkbox。</p>  
  72.             <h3>  
  73.                 STEP DAY</h3>  
  74.             <div>  
  75.                 <input type="button" value="动态设置节点有checkbox" onclick="DynamicUpdateNodeCheck()" />  
  76.             </div>  
  77.         </div>  
  78.     </div>  
  79. </body>  
  80. </html>  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值