1. 程式人生 > >jquery.ztree增加checkbox選項(可選以及不可選)

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.}

完整示例程式碼如下所示:

<!DOCTYPE html>
<html>
<head>
    <title>ZTREE DEMO - 預設zTree幾點無checkbox動態設定節點checkbox出現</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="../../../css/demo.css" type="text/css">
    <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
    <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="../../../js/jquery.ztree.core-3.5.js"></script>
    <script type="text/javascript" src="../../../js/jquery.ztree.excheck-3.5.js"></script>
    <script type="text/javascript">
		<!--
        var setting = {
            check: {
                enable: true,
                nocheckInherit: false
            },
            data: {
                simpleData: {
                    enable: true
                }
            }
        };
        //ztree用於初始化的靜態資料        
        var zNodes = [
	        { id: 1, pId: 0, name: "隨意勾選 1", nocheck: true },
	        { id: 11, pId: 1, name: "隨意勾選 1-1", nocheck: true },
	        { id: 111, pId: 11, name: "無 checkbox 1-1-1", nocheck: true },
	        { id: 112, pId: 11, name: "隨意勾選 1-1-2", nocheck: true },
	        { id: 12, pId: 1, name: "無 checkbox 1-2", nocheck: true },
	        { id: 2, pId: 0, name: "隨意勾選 2", nocheck: true },
        ];

        //過濾節點的機制 直接return node表示不做任何過濾
        function filter(node) {
            return node;
        }

        ///動態設定zTree的所有節點有checkbox
        function DynamicUpdateNodeCheck() {
            var zTree = $.fn.zTree.getZTreeObj("treeDemo");
            //根據過濾機制獲得zTree的所有節點            
            var nodes = zTree.getNodesByFilter(filter);
            //遍歷每一個節點然後動態更新nocheck屬性值
            for (var i = 0; i < nodes.length; i++) {
                var node = nodes[i];
                node.nocheck = false; //表示顯示checkbox
                zTree.updateNode(node);
            }
        }

        ///頁面載入後初始化zTree資料且預設展開所有節點
        $(document).ready(function () {
            $.fn.zTree.init($("#treeDemo"), setting, zNodes).expandAll(true);
        });
		//-->
	</script>
</head>
<body>
    <h1>
        Checkbox nocheck 演示</h1>
    <div class="content_wrap">
        <div class="zTreeDemoBackground left">
            <ul id="treeDemo" class="ztree">
            </ul>
        </div>
        <div class="right">
            <p>
                預設情況下設定任何節點無checkbox選擇框,需要配置每一個節點的nocheck屬性為true即可。</p>
            <p>
                zTree載入完成後通過updateNode(node)方法動態更新節點的nocheck屬性為false,則節點將會顯示checkbox。</p>
            <h3>
                STEP DAY</h3>
            <div>
                <input type="button" value="動態設定節點有checkbox" onclick="DynamicUpdateNodeCheck()" />
            </div>
        </div>
    </div>
</body>
</html>