Maison  >  Article  >  interface Web  >  Introduction et utilisation du plug-in treeview dans bootstrap

Introduction et utilisation du plug-in treeview dans bootstrap

零下一度
零下一度original
2018-05-14 14:56:464177parcourir

Le projet doit implémenter la gestion des autorisations et utiliser le framework front-end bootstrap, j'ai donc directement sélectionné le plug-in d'extension treeview de bootstrap. Première image :

Lorsque le nœud parent est sélectionné, tous les nœuds enfants sous le nœud parent sont également sélectionnés, voir le code

1, code HTML

<h2>TreeView Checkable</h2>
<p id="treeview-checkable"></p>

2. Données Json

function getTvStateData() {
   var defaultData = [
    {
     text: &#39;Parent 1&#39;,
     href: &#39;#parent1&#39;,
     tags: [&#39;4&#39;],
     state: {
      checked: true
     },
     nodes: [
      {
       text: &#39;Child 1&#39;,
       href: &#39;#child1&#39;,
       tags: [&#39;2&#39;],
       nodes: [
        {
         text: &#39;Grandchild 1&#39;,
         href: &#39;#grandchild1&#39;,
         tags: [&#39;0&#39;]
        },
        {
         text: &#39;Grandchild 2&#39;,
         href: &#39;#grandchild2&#39;,
         tags: [&#39;0&#39;]
        }
       ]
      },
      {
       text: &#39;Child 2&#39;,
       href: &#39;#child2&#39;,
       tags: [&#39;0&#39;]
      }
     ]
    },
    {
     text: &#39;Parent 2&#39;,
     href: &#39;#parent2&#39;,
     tags: [&#39;0&#39;],
     nodes: [
      {
       text: &#39;Child 1&#39;,
       href: &#39;#child1&#39;,
       tags: [&#39;2&#39;],
       nodes: [
        {
         text: &#39;Grandchild 1&#39;,
         href: &#39;#grandchild1&#39;,
         tags: [&#39;0&#39;]
        },
        {
         text: &#39;Grandchild 2&#39;,
         href: &#39;#grandchild2&#39;,
         tags: [&#39;0&#39;]
        }
       ]
      },
      {
       text: &#39;Child 2&#39;,
       href: &#39;#child2&#39;,
       tags: [&#39;0&#39;]
      }
     ]
    },
    {
     text: &#39;Parent 3&#39;,
     href: &#39;#parent3&#39;
    },
    {
     text: &#39;Parent 4&#39;,
     href: &#39;#parent4&#39;,
     tags: [&#39;0&#39;]
    },
    {
     text: &#39;Parent 5&#39;,
     href: &#39;#parent5&#39;,
     tags: [&#39;0&#39;]
    }
   ];

   return defaultData;
  }

3. Liaison de données JS, chargement de TreeView

$(function() {
 var $checkableTree = $(&#39;#treeview-checkable&#39;)
    .treeview({
     data: getTvStateData(), //数据
     showIcon: false,
     showCheckbox: true,
     levels: 1,
     onNodeChecked: function(event, node) { //选中节点
      var selectNodes = getChildNodeIdArr(node); //获取所有子节点
      if (selectNodes) { //子节点不为空,则选中所有子节点
       $(&#39;#treeview-checkable&#39;).treeview(&#39;checkNode&#39;, [selectNodes, { silent: true }]);
      }
      var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);
      setParentNodeCheck(node);
     },
     onNodeUnchecked: function(event, node) { //取消选中节点
      var selectNodes = getChildNodeIdArr(node); //获取所有子节点
      if (selectNodes) { //子节点不为空,则取消选中所有子节点
       $(&#39;#treeview-checkable&#39;).treeview(&#39;uncheckNode&#39;, [selectNodes, { silent: true }]);
      }
     },
     onNodeExpanded:
      function(event, data) {
       if (data.nodes === undefined || data.nodes === null) {
        
       } else if (data.tags[0] === "2") {
        alert("Tags 2");
       } else {
        alert("1111");
       }
      }
    });
 });

4. Lorsqu'un nœud est sélectionné, tous les nœuds enfants sont sélectionnés/désélectionnés, et lorsque tous les nœuds enfants sont sélectionnés, le nœud parent est sélectionné

function getChildNodeIdArr(node) {
   var ts = [];
   if (node.nodes) {
    for (x in node.nodes) {
     ts.push(node.nodes[x].nodeId);
     if (node.nodes[x].nodes) {
      var getNodeDieDai = getChildNodeIdArr(node.nodes[x]);
      for (j in getNodeDieDai) {
       ts.push(getNodeDieDai[j]);
      }
     }
    }
   } else {
    ts.push(node.nodeId);
   }
   return ts;
  }

  function setParentNodeCheck(node) {
   var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);
   if (parentNode.nodes) {
    var checkedCount = 0;
    for (x in parentNode.nodes) {
     if (parentNode.nodes[x].state.checked) {
      checkedCount ++;
     } else {
      break;
     }
    }
    if (checkedCount === parentNode.nodes.length) {
     $("#treeview-checkable").treeview("checkNode", parentNode.nodeId);
     setParentNodeCheck(parentNode);
    }
   }
  }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn