如果我单击第一个ul列表,则单击它的li的slideToggle(),如果我单击第二个ul列表,则单击它的li的slideToggle(),但是,也会显示第一个ul列表。我想要如果单击第一个ul列表,则第二个ul列表li必须自动消失,因此单击第二个ul,则第一个ul li必须消失。我的代码是



$("document").ready(function(){
		$("#block1").click(function(){
			$("#none1, #none2, #none3").slideToggle();
		} );
		$("#block2").click(function(){
			$("#none4, #none5, #none6").slideToggle();
		} );
	});

#none1, #none2, #none3, #none4, #none5, #none6{
		display: none;
	}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<ul id="first">
  <li id="block1"><a href="#">Block1</a></li>
  <li id="none1">None1</li>
  <li id="none2">None1</li>
  <li id="none3">None1</li>
</ul>

<ul id="second">
  <li id="block2"><a href="#">Block2</a></li>
  <li id="none4">None2</li>
  <li id="none5">None2</li>
  <li id="none6">None2</li>
</ul>

最佳答案

简化的版本应使用siblings()not()来满足其他“块”元素的要求

$(function(){
    var $blocks = $('#block1, #block2').click(function(){
        // slide up all siblings of other block(s)
        $blocks.not(this).siblings().slideUp();
        // toggle slide this one
        $(this).siblings().slideToggle();
    });
});


DEMO

09-26 07:50