Jquery 如何防止同一项目上出现多个滑动切换

Jquery 如何防止同一项目上出现多个滑动切换,jquery,accordion,slidetoggle,Jquery,Accordion,Slidetoggle,我目前有一个分UL列表。单击列表项时,我希望UL滑动切换。我已经做到了这一点。我现在遇到的问题是,如果我点击打开的同一个项目来关闭它,它会执行双重切换。值得一提的是,我希望一次只打开一个sub ul HTML <div class="top"> <ul> <li><a href="#"> Item </a></li> <li class="drop"><a href="#"> Item Drop

我目前有一个分UL列表。单击列表项时,我希望UL滑动切换。我已经做到了这一点。我现在遇到的问题是,如果我点击打开的同一个项目来关闭它,它会执行双重切换。值得一提的是,我希望一次只打开一个sub ul

HTML

<div class="top">
 <ul>
  <li><a href="#"> Item </a></li>
<li class="drop"><a href="#"> Item Drop </a>
  <ul class="sub">
    <li><a href="#"> Sub Item </a></li>
    <li><a href="#"> Sub Item </a></li>
    <li><a href="#"> Sub Item </a></li>
  </ul>
</li>
<li><a href="#"> Item </a></li>
<li><a href="#"> Item </a></li>
<li class="drop"><a href="#"> Item Drop</a>
  <ul class="sub">>
    <li><a href="#"> Sub Item </a></li>
    <li><a href="#"> Sub Item </a></li>
    <li><a href="#"> Sub Item </a></li>
  </ul>
</li>
</ul>
</div>
JS

ul {
  li {
    ul {
      display:none;
    }
  }
}
$('.drop').click(function(){
  $('.sub').slideUp();
  $(this).children('.sub').slideToggle();
});

尝试以下方法

$('.drop').click(function(e){
  if($(e.target).closest('ul').is(':not(.sub)')) {//if the clicked element is has a ul that is not .sub we slide them up
  $('.sub').slideUp();}
  $(this).children('.sub').slideToggle();
});
或:

试试下面的方法

$('.drop').click(function(e){
  if($(e.target).closest('ul').is(':not(.sub)')) {//if the clicked element is has a ul that is not .sub we slide them up
  $('.sub').slideUp();}
  $(this).children('.sub').slideToggle();
});
或:


删除
$('.sub').slideUp()臭虫。我应该提到,我希望单击某个项目时所有其他项目都向上滑动,以便只显示一个项目臭虫。我应该提到,当点击一个项目时,我希望所有其他项目都向上滑动,这样只有一个项目显示出来。非常感谢你。非常好,非常感谢你。非常好。