如何展开这个CSS列表
How do I expand this CSS list?
我已经将菜单扩展了一级,但不知道如何再次扩展。我做错了什么?
HTML:
<ul id="nav">
<li><a href="#">Root</a>
<ul>
<li><a href="#">Option 1</a>
<ul>
<li><a href="">Link3</a></li>
<li><a href="">Lin4</a></li>
<li><a href="">Link5</a></li>
<li><a href="">Link6</a></li>
</ul>
</li>
<li><a href="#">Option2</a>
<ul>
<li><a href="">Link3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
CSS:
ul {
padding: 0px;
margin: 0px;
list-style: none;
background-color: #53BF58;
width: 10em;
}
li ul {
display: none;
background-color: #86EF8A;
}
li.active ul {
display: block;
}
li ul li ul {
display: none;
background-color: #86EF8A;
}
li ul li.active ul {
display:block;
}
Javascript:
function hideAll() {
var navList = document.getElementById("nav");
for (var i=0; i<navList.childNodes.length; i++) {
var node = navList.childNodes[i];
if (node.tagName == "LI") {
node.className = node.className.replace(new RegExp("'s?active", "i"), "");
}
}
}
window.onload = function () {
var navList = document.getElementById("nav");
for (var i=0; i<navList.childNodes.length; i++) {
var node = navList.childNodes[i];
if (node.tagName == "LI") {
node.onclick = function() {
hideAll();
this.className += " active";
}
}
}
}
childNodes
只包含元素的直接子级——您还需要递归每个节点的childNodes
。
我强烈建议您使用像jQuery这样的框架(http://jquery.com)为了简化代码:http://jsfiddle.net/jDEhU/5/
$('#nav').delegate('li', 'click', function() {
var self = $(e.target), //get a reference to the clicked element
active = self.parents().andSelf() //select all li's that should be active
.addClass('active'); //and activate them
$('#nav .active').not(active).removeClass('active'); //deactivate others
});
我认为问题在于您只循环通过列表中的第一级节点。您需要遍历每个后续列表的子元素,并添加一个onClick函数以保持其扩展。
相关文章:
- Javascript通过列表项的函数和css来更改背景颜色
- 如何在Nike Run Club页面上执行列表css
- 使用 CSS 和 JavaScript 的列表
- 如何调整打开列表中的“+”号?(CSS)
- jQuery,CSS:自动着色HTML列表
- 如何在HTML/CSS/JS中为表/列表应用行虚拟化
- 如何使用CSS在列中显示随机生成的列表
- 在模板中为Django表单分离媒体类对象的JS和CSS列表输出
- 我如何用css或javascript订购这样的html列表
- 如何修复Foundation4顶部栏中过长的css下拉列表
- 在文档就绪时追加DDL;不要让它在列表项上有CSS,而不让它们可排序
- 如何对现有列表项使用CSS转换来为新列表项腾出空间
- 将列表的css列计数属性相应地绑定到引导网格类
- 为什么在ng重复列表中,unshift()和shift()会发生CSS转换
- 如何将动画 css 添加到引导下拉列表
- 向每个列表项添加延迟的 CSS 动画
- 引导下拉列表不适用于标准 JS 和 CSS
- windows 8应用程序CSS列表视图改变内联样式
- CSS列表样式类型使用属性值
- 如何展开这个CSS列表