使用slideToggle展开和收缩列表项

4

如何在单击时展开/折叠嵌套列表中,防止最低级项的“切换”?例如,列表中的最后一项是超链接,但单击会使该列表折叠而不是打开该链接。

jQuery('.intranet ul').hide();

jQuery('.intranet-folder').click(function() {
  jQuery(this).children("ul").slideToggle();
  return false;
});
.intranet-folder {cursor: pointer;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<ul class="intranet">
  <li class="intranet-folder">Years
    <ul>
      <li class="intranet-folder">2015
        <ul>
          <li class="intranet-folder">January
            <ul>
              <li><a href="#">Click to download file</a></li>
            </ul>
          </li>
          <li class="intranet-folder">February
            <ul>
              <li><a href="#">Click to download file</a></li>
            </ul>
          </li>
        </ul>
      </li>
      <li class="intranet-folder">2014
        <ul>
          <li class="intranet-folder">November
            <ul>
              <li><a href="#">Click to download file</a></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
</ul>


请发布完整的代码或提供演示。 - Alex
1个回答

2

参考一下,我在如何制作可展开列表中找到了答案。

$(function prepareList() {
 $('#expList').find('li:has(ul)').unbind('click').click(function(event) {
  if(this == event.target) {
   $(this).toggleClass('expanded');
   $(this).children('ul').toggle('medium');
  }
  return false;
 }).addClass('collapsed').removeClass('expanded').children('ul').hide();
 
 //Hack to add links inside the cv
 $('#expList a').unbind('click').click(function() {
  window.open($(this).attr('href'));
  return false;
 });
 //Create the button functionality
 $('#expandList').unbind('click').click(function() {
  $('.collapsed').addClass('expanded');
  $('.collapsed').children().show('medium');
 })
 $('#collapseList').unbind('click').click(function() {
  $('.collapsed').removeClass('expanded');
  $('.collapsed').children().hide('medium');
 })
});
#expList ul, li {
  list-style: none;
  cursor: pointer;
}
  
#expList li {
 line-height:140%;
 text-indent:0px;
 background-position: 1px 8px;
 background-repeat: no-repeat;
}

#expList .collapsed:before {
 font-family: FontAwesome;
   content: "\f07b\00a0";
}

#expList .expanded:before {
   content: '\f07c\00a0';
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="intranet" id="expList">
  <li class="intranet-folder">Years
    <ul>
      <li class="intranet-folder">2015
        <ul>
          <li class="intranet-folder">January
            <ul>
              <li><a href="#">Click to download file</a></li>
            </ul>
          </li>
          <li class="intranet-folder">February
            <ul>
              <li><a href="#">Click to download file</a></li>
            </ul>
          </li>
        </ul>
      </li>
      <li class="intranet-folder">2014
        <ul>
          <li class="intranet-folder">November
            <ul>
              <li><a href="#">Click to download file</a></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
</ul>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接