0
A
回答
2
這其實很簡單。它由一個遞歸節點列表組成。
您可以通過使用ul
,li
和a
同時實現的是:
<ul>
<li>
<a>Text here</a>
<!-- repeat -->
</li>
</ul>
並執行的行爲,這是很簡單的了。您必須查看a
元素是否具有nextElementSibling
,如果有,則是因爲當前節點有一個孩子。
看看下面的例子中,我創建:
(function() {
var tree = document.getElementById('tree');
/* firstly, we hide all the child items */
[].forEach.call(tree.querySelectorAll('ul li a'), function(el, i) {
if (el.nextElementSibling)
el.nextElementSibling.classList.add('hidden');
});
/* here we make a event delegation, we add an event handler to the hole tree */
tree.addEventListener('click', function(e) {
var el = e.target;
/* if the element clicked is an anchor, it's because it's a node/leaf */
if (el.tagName === 'A') {
e.preventDefault();
/* if it has a nextElementSibling, it's because it has children, so it's a node */
if (el.nextElementSibling) {
/* we toggle the visibility of the child */
el.nextElementSibling.classList.toggle('hidden');
} else {
// do something with the final child (leaf)
console.log(el.textContent);
}
}
});
})();
.hidden {
display: none;
}
<div id="tree">
<ul>
<li>
<a>Father</a>
<ul>
<li>
<a>Son</a>
</li>
</ul>
</li>
<li>
<a>Grandfather</a>
<ul>
<li>
<a>Father</a>
<ul>
<li>
<a>Son</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a>Father</a>
<ul>
<li>
<a>Son</a>
</li>
</ul>
</li>
</ul>
</div>
相關問題
- 1. C++ - WINAPI - 遞歸創建菜單?
- 2. 遞歸SQL創建DNN導航菜單
- 3. 遞歸創建菜單數組
- 4. 如何在遞歸的方式創建一個菜單Angularjs
- 5. 如何用C#創建一個對象菜單層次遞歸?
- 6. 如何在遞歸中創建數組?
- 7. Ravendb遞歸菜單
- 8. 遞歸php菜單
- 9. AngularJS中的遞歸菜單
- 10. 如何遞歸創建取消檢出ClearCase中的上下文菜單
- 11. 建築遞歸導航菜單列表
- 12. 如何在linux mint中創建菜單
- 13. 如何在Java中創建主菜單?
- 14. 如何在cocos3d中創建菜單
- 15. 如何在python3.5中創建菜單欄
- 16. 如何在Cocos2d中創建菜單?
- 17. Extjs:如何在菜單中創建contextmenu
- 18. 如何在JSF中創建菜單欄
- 19. 在android中創建菜單/子菜單
- 20. SQL遞歸菜單排序
- 21. Laravel菜單自遞歸
- 22. 遞歸菜單樹功能
- 23. 遞歸菜單系統
- 24. 遞歸陣列菜單PHP
- 25. 遞歸菜單問題
- 26. 如何在上下文菜單中創建子菜單?
- 27. 如何使用菜單欄在grails中創建菜單
- 28. 在創建菜單後,如何更改菜單中的圖標?
- 29. 如何在html/css中創建下拉菜單登錄菜單
- 30. 如何在AngularJS中創建菜單和子菜單
摺疊式菜單是。 – CodeRomeos
看起來像手風琴 – Tushar
嘗試用手風琴或樹 – Chris