繁体   English   中英

jQuery-如何滑动ul / li列表

[英]jQuery - how to slideToogle ul/li list

得到此代码:

<ul>something
  <li>one</li>
  <li>two</li>
  <li>three</li>
</ul>

我要实现的是,当我单击UL文本元素(某物)时,整个UL处于切换状态。 当我单击LI元素时-仅切换此特定的LI元素。 我想我需要将代码修改为:

<ul class="whole">something
  <li>
    <ul>one
      <li class="li one">one</li>
    </ul>
    <ul>two
      <li class="li two">two</li>
    </ul>
    <ul>three
      <li class="li three">three</li>
    </ul>
  </li>
</ul>

因此,我可以碰上某些东西(文本)以切换LI(一,二,三)。 但是,如何协调点击时切换整个UL与切换LI?

到目前为止的jQuery代码:

    $(".whole").click(function()
    {
      $(".li").slideToggle();
    });

其余的jQ代码应该是什么样的?

您要定位整个无序列表,并首先使用css将其隐藏,使用另一个元素像导航链接一样触发它:

 $(".toggle-ul").click(function() { $(".whole").slideToggle(); }); $(".whole .toggle-sub-ul").click(function() { $(this).parent().find('ul').slideToggle(); }); 
 .whole { display: none; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="toggle-ul">Click me</div> <ul class="whole"> <li> <div class="toggle-sub-ul">Click me</div> <ul> <li class="li one">one</li> </ul> </li> <li> <div class="toggle-sub-ul">Click me</div> <ul> <li class="li two">two</li> </ul> </li> <li> <div class="toggle-sub-ul">Click me</div> <ul> <li class="li three">three</li> </ul> </li> </ul> 

编辑:

您必须在子组内添加其他元素才能触发这些切换。 代码已更新

当您点击"something" ,它将隐藏整个ul。 否则,仅隐藏特定的li。

  $("#toggleul,.whole").click(function() { $("ul").slideToggle(); }); $('li').click(function(e){ $(this).slideToggle(); e.stopPropagation(); }) $('#toggleli').click(function(){ $('li').show(); }) 
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="whole">something <li> one </li> <li> two </li> <li> three </li> <li> four </li> </ul> <div id="toggleul">toggle ul</div> <div id="toggleli">show toggled li</div> 

您是正确的div内部列表,它在验证时出错( 我可以将div用作UL的直接子级吗? + 此HTML结构是否有效?UL> DIV> {LI,LI},DIV> {LI,LI},DIV> {LI,LI} ),因此只需向UL元素添加一个类。

 $(".toggle-ul").click(function() { $(".whole").slideToggle(); }); $(".whole .toggle-sub-ul").click(function() { $(this).parent().find('li').slideToggle(); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class="toggle-ul">Click me</div> <ul class="whole"> <li> <ul class="toggle-sub-ul">Click me <li class="li one">one</li> </ul> </li> <li> <ul class="toggle-sub-ul">Click me <li class="li two">two</li> </ul> </li> <li> <ul class="toggle-sub-ul">Click me <li class="li three">three</li> </ul> </li> </ul> 

这应该完全按照您想要的方式工作。 顺便说一句,我在这里修改了@Sergio Alen代码,在这个div旁边,它是完全有效的,应归功于他。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM