日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于bootstrap的treeview不显示多选(复选框)的问题,以及联动选择的问题,外加多选后取值...

發布時間:2024/9/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于bootstrap的treeview不显示多选(复选框)的问题,以及联动选择的问题,外加多选后取值... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近做項目用到了treeview。因為涉及到多選的問題,很是棘手,于是乎,我決定查看原生JS,探個究竟。需要引用官方的bootstrap-treeview.js都知道吧,對于所需要引用的,我就不多說了。相信很多人都在網上看到了,有的人說要寫showCheckbox:true;有的人又讓寫multiSelect:true。眾說紛紜的,但是本博主試了多次,仍不起作用,最后痛下決心,看源碼。要知道,看源碼是很費時間的事情。我把部分關鍵源碼貼出來。

聰明的人一眼就能看出來,default是什么意思?默認。也就是說,在默認的配置里面,并沒有showCheckbox:true和multiSelect:true,那么它怎么可能起作用呢???也就是說,你引的JS,并不是你真正想要的。來來來,再來,再看一個JS。

看到了嗎,這個JS才有我們想要的東西。而且十分全。注意,我的這個JS在showCheckbox后面定義的是‘!1’,那么‘!1’代表什么意思呢?給大家普及一個知識吧。大部分瀏覽器里,0代表false,1代表true,現在,在打開測試頁,你就會發現,復選框出來了。

如果此時你的復選框還是沒有出來,說明要么你數據格式不對,要么你引得JS不對,或者人家源碼里定義的顯示復選框的字段為A,而你偏偏寫個B,那就不會出來。如果此時你沒有實現復選框,那么你就不必往下看了。

接下來,我們來實現聯動勾選的效果。

因為,源碼里可以說確實是力量有限,在那么復雜的條件判斷下做出來的,已經很厲害了,如果你讀一遍,你也會發現,要寫個公共的聯動效果真的很難!那我們就自己實現吧!這一點,我要感謝網上某個博主,他的思路很好,幫助我實現了。先看下實現部分,再看他思路:

[javascript]?view plain?copy
  • $('#tree_ul_id').treeview({??
  • ????????????levels:?1,??
  • ????????????expandIcon:?'glyphicon?glyphicon-chevron-right',??
  • ????????collapseIcon:?'glyphicon?glyphicon-chevron-down',??
  • ????????nodeIcon:?'glyphicon?glyphicon?glyphicon-th-list',??
  • ????????selectedBackColor:?false,??
  • ????????selectedColor:?'#337AB7',??
  • ????????showCheckbox:?1,//這里之所以寫1,是因為我引得js源碼里定義1為true??
  • ????????multiSelect:?1,//這里之所以寫1,是因為我引得js源碼里定義1為true??
  • ????????data:?這里放它需要的格式的數據,??
  • ????????onNodeChecked:?function(event,?node)?{?//選中節點??
  • ???????????????????var?selectNodes?=?getChildNodeIdArr(node);?//獲取所有子節點??
  • ???????????????????if?(selectNodes)?{?//子節點不為空,則選中所有子節點??
  • ???????????????????????$('#tree_ul_id').treeview('checkNode',?[selectNodes,?{?silent:?true?}]);??
  • ???????????????????}??
  • ???????????????????var?parentNode?=?$("#tree_ul_id").treeview("getNode",?node.parentId);??
  • ???????????????????setParentNodeCheck(node);??
  • ???????????????},??
  • ???????????????onNodeUnchecked:?function(event,?node)?{?//取消選中節點??
  • ???????????????????var?selectNodes?=?getChildNodeIdArr(node);?//獲取所有子節點??
  • ???????????????????if?(selectNodes)?{?//子節點不為空,則取消選中所有子節點??
  • ???????????????????????$('#tree_ul_id').treeview('uncheckNode',?[selectNodes,?{?silent:?true?}]);??
  • ???????????????????}??
  • ???????????????}??
  • ????????????});??
  • 再來看邏輯原理:

    [javascript]?view plain?copy
  • 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;??
  • }??
  • [javascript]?view plain?copy
  • function?setParentNodeCheck(node)?{??
  • ????var?parentNode?=?$("#tree_ul_id").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)?{??
  • ????????????$("#tree_ul_id").treeview("checkNode",?parentNode.nodeId);??
  • ????????????setParentNodeCheck(parentNode);??
  • ????????}??
  • ????}??
  • }??

  • 把以上代碼直接考進去,然后改下對應的ID就完成了。這里值得一提是遍歷子節點時,遞歸用的卻是不錯,由于數據量十分龐大,層層迭代,遞歸是不二之選。請看效果圖:


    我故意勾選掉了兩個,仍然是我們想要的樣子,為此,任務完成。

    俗話說,幫人幫到底,送佛送上西。來說說,怎么樣多選取值吧。一句話的事:$('#tree_ul_id').treeview('getChecked');

    總結

    以上是生活随笔為你收集整理的关于bootstrap的treeview不显示多选(复选框)的问题,以及联动选择的问题,外加多选后取值...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: a级黄色在线观看 | 成人精品视频 | 91精品国产综合久久精品图片 | 涩涩视频免费观看 | 波多野结衣毛片 | 久久久久久久久久91 | 国产黄色片免费 | 欧美在线播放一区二区 | 中文字幕国产一区二区 | 国产一区2区 | xxxxx色 | 狂野欧美性猛交xxxx巴西 | 男人天堂va | 岛国av在线免费 | 免费观看成人在线视频 | 国产精品无码免费在线观看 | 黑人巨大精品欧美一区二区 | 国产欧美精品区一区二区三区 | 日韩欧美一区二区在线 | 日本中文在线观看 | 我要看黄色大片 | 国产男人搡女人免费视频 | 激情四射网站 | 性一交一乱一区二区洋洋av | 亚洲区在线播放 | 欧美91在线 | 麻豆av一区二区三区在线观看 | 亚洲午夜精品久久久久久人妖 | www.香蕉网| 韩日成人 | 又黄又色又爽的视频 | 精品福利视频一区二区 | 最近中文字幕在线视频 | 欧美视频久久 | 色国产视频 | 久草视频手机在线观看 | 性欧美18| 精品国模一区二区三区欧美 | 亚洲成人精品网 | 亚洲综合二区 | 91精品国自产在线偷拍蜜桃 | 女生张开腿让男生插 | 成人在线激情网 | 激情五月俺也去 | 国产黄色免费网站 | 亚洲图片在线 | 妹子干综合 | 久久黄色大片 | 成年人网站在线观看视频 | 精品一区在线视频 | 亚洲一区二区三区电影在线观看 | 九色91丨porny丨丝袜 | 午夜神马福利 | 天天干天天操心 | 麻豆一区二区三区四区 | 999精品在线观看 | 国产不卡一区二区视频 | 九九综合九九综合 | 美女露胸无遮挡 | 色综合99久久久无码国产精品 | 日韩免费av网站 | 鲁一鲁在线视频 | 免费伊人网 | 午夜精品久久久久久久99黑人 | 日韩在线免费观看视频 | 国产精品一区二区三区不卡 | 放荡闺蜜高h季红豆h | 亚洲免费视频一区二区三区 | 久色资源 | 久久成人18免费观看 | 本站只有精品 | 超清纯大学生白嫩啪啪 | 性色AV无码久久一区二区三 | 一本大道久久a久久精二百 琪琪色在线视频 | 人人看人人爽 | 97人人草 | 国产乱码久久久久久 | 爱爱的网站| 嫩模一区 | 自拍偷拍99 | 朝桐光av在线一区二区三区 | 好男人www在线视频 我们的2018在线观看免费高清 | 九七精品 | 国产色吧 | 日韩亚洲欧美一区二区三区 | 91久久久久久久久久久 | 欧美日韩中 | 国产精品19乱码一区二区三区 | 你懂的91 | 亚洲欧美一区二区三区在线 | 淫辱的世界(调教sm)by | 日韩黄色一级 | 少妇粉嫩小泬喷水视频www | 自拍偷在线精品自拍偷无码专区 | 日韩精品一区二区在线观看 | 无码人妻丰满熟妇区毛片18 | 青青艹在线视频 | 孕妇爱爱视频 | 免费看一区二区三区 |