我有一个简单的嵌套列表,如下:
<ul class='main'>
<li class='mainlink'><a href='#'>Main 1</a>
<ul class='sub'>
<li><a href='#'>Sub 1-1</a>
<li><a href='#'>Sub 1-2</a>
<li><a href='#'>Sub 1-3</a>
</ul>
</li>
<li class='mainlink'><a href='#'>Main 2</a>
<ul class='sub'>
<li><a href='#'>Sub 2-1</a>
<li><a href='#'>Sub 2-2</a>
<li><a href='#'>Sub 3-3</a>
</ul>
</li>
<li class='mainlink'><a href='#'>Main 3</a>
<ul class='sub'>
<li><a href='#'>Sub 3-1</a>
<li><a href='#'>Sub 3-2</a>
<li><a href='#'>Sub 3-2</a>
</ul>
</li>
</ul>
这是我的jQuery:
$( ".mainlink" ).click(function() {
var child = $(this).children('.sub');
var rest = $('.sub:visible').not(child);
child.slideToggle();
rest.slideUp();
});单击.mainlink应该会打开它的子列表.sub,并关闭所有其他打开的子列表。此部分的功能与预期一致,但在打开.sub的情况下单击.mainlink会关闭.sub并立即打开它,而不是保持关闭状态直到下一次单击发生。
这个问题可能很容易解决,但我显然找不到正确的方法。谢谢你的帮助。
拉尔夫
发布于 2019-03-03 20:35:22
试试这个:
$(document).ready(function(){
$( ".mainlink > a" ).click(function() {
$('.main .sub').not($(this)).slideUp();
var child = $(this).parent().children('.sub');
if(!child.is(":visible")){
child.slideDown();
}
});
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class='main'>
<li class='mainlink'><a href='#'>Main 1</a>
<ul class='sub' style='display:none'>
<li><a href='#'>Sub 1-1</a>
<li><a href='#'>Sub 1-2</a>
<li><a href='#'>Sub 1-3</a>
</ul>
</li>
<li class='mainlink'><a href='#'>Main 2</a>
<ul class='sub' style='display:none'>
<li><a href='#'>Sub 2-1</a>
<li><a href='#'>Sub 2-2</a>
<li><a href='#'>Sub 3-3</a>
</ul>
</li>
<li class='mainlink'><a href='#'>Main 3</a>
<ul class='sub' style='display:none'>
<li><a href='#'>Sub 3-1</a>
<li><a href='#'>Sub 3-2</a>
<li><a href='#'>Sub 3-2</a>
</ul>
</li>
</ul>
发布于 2019-03-03 20:40:21
关闭所有.sub,然后打开用户选择的.sub
演示
$(".mainlink a").on('click', function() {
var subMenu = $(this).next('.sub');
$('.sub').slideUp();
if (subMenu.is(':visible')) {
subMenu.slideUp();
} else {
subMenu.slideDown();
}
});<ul class='main'>
<li class='mainlink'>
<a href='#'>Main 1</a>
<ul class='sub' style='display:none'>
<li><a href='#'>Sub 1-1</a></li>
<li><a href='#'>Sub 1-2</a></li>
<li><a href='#'>Sub 1-3</a></li>
</ul>
</li>
<li class='mainlink'>
<a href='#'>Main 2</a>
<ul class='sub' style='display:none'>
<li><a href='#'>Sub 2-1</a></li>
<li><a href='#'>Sub 2-2</a></li>
<li><a href='#'>Sub 3-3</a></li>
</ul>
</li>
<li class='mainlink'>
<a href='#'>Main 3</a>
<ul class='sub' style='display:none'>
<li><a href='#'>Sub 3-1</a></li>
<li><a href='#'>Sub 3-2</a></li>
<li><a href='#'>Sub 3-2</a></li>
</ul>
</li>
</ul>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
https://stackoverflow.com/questions/54968791
复制相似问题