我試圖得到一個類似手風琴的功能,我只有<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() –