欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

bootstrap插件treeview實現全選父節(jié)點下所有子節(jié)點和反選功能

 更新時間:2017年07月21日 15:39:28   作者:Rain  
這篇文章主要為大家詳細介紹了bootstrap插件treeview實現全選父節(jié)點下所有子節(jié)點、反選功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

項目需要實現權限管理,使用前端框架bootstrap,所以就直接選用了bootstrap的treeview擴展插件。先上圖:

選中父節(jié)點時,父節(jié)點下所有子節(jié)點也都全部選中,看代碼

1、HTML代碼

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

2、Json數據

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

   return defaultData;
  }

3、JS數據綁定,加載TreeView

$(function() {
 var $checkableTree = $('#treeview-checkable')
    .treeview({
     data: getTvStateData(), //數據
     showIcon: false,
     showCheckbox: true,
     levels: 1,
     onNodeChecked: function(event, node) { //選中節(jié)點
      var selectNodes = getChildNodeIdArr(node); //獲取所有子節(jié)點
      if (selectNodes) { //子節(jié)點不為空,則選中所有子節(jié)點
       $('#treeview-checkable').treeview('checkNode', [selectNodes, { silent: true }]);
      }
      var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);
      setParentNodeCheck(node);
     },
     onNodeUnchecked: function(event, node) { //取消選中節(jié)點
      var selectNodes = getChildNodeIdArr(node); //獲取所有子節(jié)點
      if (selectNodes) { //子節(jié)點不為空,則取消選中所有子節(jié)點
       $('#treeview-checkable').treeview('uncheckNode', [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、選中/取消選中父節(jié)點時,選中/取消選中所有子節(jié)點,以及選中所有子節(jié)點時,選中父節(jié)點

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);
    }
   }
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 淺談JavaScript中this的指向問題

    淺談JavaScript中this的指向問題

    這篇文章主要介紹了淺談JavaScript中this的指向問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • JavaScript通過filereader接口讀取文件

    JavaScript通過filereader接口讀取文件

    這篇文章主要為大家詳細介紹了通過filereader接口讀取文件,使用readAsDataURL方法預覽圖片的相關方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • JavaScript編寫簡單的計算器

    JavaScript編寫簡單的計算器

    這篇文章主要介紹了JavaScript如何編寫簡單的計算器,功能很簡單,可以實現加減乘除功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-11-11
  • Json對象和字符串互相轉換json數據拼接和JSON使用方式詳細介紹(小結)

    Json對象和字符串互相轉換json數據拼接和JSON使用方式詳細介紹(小結)

    JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式.這篇文章主要介紹了Json對象和字符串互相轉換json數據拼接和JSON使用方式詳細介紹(小結)的相關資料,需要的朋友可以參考下
    2016-10-10
  • 用js控件div的滾動條,讓它在內容更新時自動滾到底部的實現方法

    用js控件div的滾動條,讓它在內容更新時自動滾到底部的實現方法

    下面小編就為大家?guī)硪黄胘s控件div的滾動條,讓它在內容更新時自動滾到底部的實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • javascript跨域刷新實現代碼

    javascript跨域刷新實現代碼

    在XX項目里面需要通過一個iframe去刷新同一窗口的另外一個iframe。一個超級簡單的處理,但我還在blog上記一記,有些看似簡單的東西,在真實項目應用中還是值得思考地方
    2011-01-01
  • 基于JavaScript實現一個簡單的事件觸發(fā)器

    基于JavaScript實現一個簡單的事件觸發(fā)器

    這篇文章主要為大家詳細介紹了如何使用JavaScript實現一個簡單的事件觸發(fā)器,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • JS實現audio音頻剪裁剪切復制播放與上傳(步驟詳解)

    JS實現audio音頻剪裁剪切復制播放與上傳(步驟詳解)

    這篇文章主要介紹了JS實現audio音頻剪裁剪切復制播放與上傳,本文分步驟通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • js實現京東輪播圖效果

    js實現京東輪播圖效果

    這篇文章主要為大家詳細介紹了js實現京東輪播圖效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • JS首屏加載時間優(yōu)化的解決方法總結

    JS首屏加載時間優(yōu)化的解決方法總結

    首屏加載時間是一個衡量網頁性能和用戶體驗的關鍵指標,這個問題無論是在面試中還是在項目開發(fā)中都占有極其高的權重,本文為大家整理了幾種JS中優(yōu)化首屏加載時間的方法,希望對大家有所幫助
    2024-02-02

最新評論