我试图得到一个类似手风琴的功能,我只有<li>
与类.level1,.level2,.level3 ..等等,我的问题是,如果我点击.level2,项目将隐藏,直到下一个.level2元素没有问题。
但是,如果我点击.level3并隐藏.level4,然后单击.level2隐藏.level3,我可以在.level2下看到.level4项目。jQuery的问题与隐藏李元素
我不知道如何解决
请检查演示:
$('.level2').click(function(e) {
if ($(this).next('li').hasClass('level3')) {
$(this).nextUntil('.level2').toggle();
e.preventDefault()
}
})
$('.level3').click(function(e) {
if ($(this).next('li').hasClass('level4')) {
$(this).nextUntil('.level3').toggle();
e.preventDefault()
}
})
$('.level4').click(function(e) {
if ($(this).next('li').hasClass('level5')) {
$(this).nextUntil('.level4').toggle();
e.preventDefault()
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="level1"><a href=""><span>Level1</a></li>
<li class="level2"><a href=""><span>Level2</a></li>
<li class="level2"><a href=""><span>Level2</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level2"><a href=""><span>Level2</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level2"><a href=""><span>Level2</a></li>
<li class="level3"><a href=""><span>Level3</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level4"><a href=""><span>Level4</a></li>
<li class="level2"><a href=""><span>Level3</a></li>
</ul>
我敢打赌猜测,你有'切换()'在你的'$(” level2' 的。)上(点击...'这可能是更好的改变,要'。 hide()'并将'show()'作为'$('。levelX')的单击属性的一部分' – Jared
您需要在if之外调用'e.preventDefault',否则它会跟随链接并重新加载页面。 – Barmar
谢谢,但问题不是preventDefault() –