我正在构建此菜单,但在排除父母及其子女时遇到问题。我希望在没有额外课程的情况下解决这个问题。
所以它假设的工作方式是点击 aa.clicked
并且它在它自己.hide()
的外部但在它的范围内li elements
li
ul
找到父母并在我做ul
的课程上放一堂课没问题。这里的难点在于排除. 听起来确实很乱,所以我尽量在脚本中发表评论。li
li.active
li.active
谢谢大家的输入
编辑:我在解释方面做得很差,但就像我点击level 1 - 1
并level 1 - 2
假设要隐藏一样,这就是我们在菜单中更深入地使用 2 - 1 等的模式
首先是演示:http: //jsfiddle.net/Abj9u/6/
$('.clicked').on('click', function(){
var $this = $(this);
//activate this li
$this.parent('li:first').addClass('active');
//hide the other level (1)(2)(3)(4)(ect..) li items
//is there a way to exlude .active li and its children without adding a class like .sub to the sub li's?
$this.parents('ul:first').find('li').not('.active').hide();
//add class to this for style
$this.addClass('selected');
//show the sub ul
$this.parent().children('ul:first').show();
});
html
<ul id="nav">
<li>
<a href="#" class="clicked">Level 1 - 1</a>
<ul class="hidden">
<li><a href="#" class="clicked">Level 2.1 - 1</a>
<ul class="hidden"><li><a href="#" class="clicked">Level 3.1 - 1</a></li></ul>
</li>
<li><a href="#" class="clicked">Level 2.2 - 1</a>
<ul class="hidden"><li><a href="#" class="clicked">Level 3.2 - 1</a></li></ul>
</li>
<li><a href="#" class="clicked">Level 2.3 - 1</a>
<ul class="hidden"><li><a href="#" class="clicked">Level 3.3 - 1</a></li></ul>
</li>
</ul>
</li>
<li>
<a href="#" class="clicked">Level 1 - 2</a>
<ul class="hidden">
<li><a href="#" class="clicked">Level 2.1 - 2</a>
<ul class="hidden"><li><a href="#" class="clicked">Level 3.1 - 2</a></li></ul>
</li>
<li><a href="#" class="clicked">Level 2.2 - 2</a>
<ul class="hidden"><li><a href="#" class="clicked">Level 3.2 - 2</a></li></ul>
</li>
<li><a href="#" class="clicked">Level 2.3 - 2</a>
<ul class="hidden"><li><a href="#" class="clicked">Level 3.3 - 2</a></li></ul>
</li>
</ul>
</li>
</ul>