在expandable <div>中使用jquery创建可扩展的<div>

时间:2016-05-17 11:27:27

标签: jquery css containers expandable

我发现这段代码在不久前创建了一个可扩展/可折叠的同时尝试构建一个可扩展的Div-Container,它迄今为止为我创造了奇迹(这里没有经验的爱好设计师)。

现在我想在其中一个中插入一个可扩展的div。我面临的问题是我无法弄清楚如何按顺序更改功能,因此它会自动重新调整第一个可扩展div的外部高度。我有一个示例,它应该在这里看起来像(如果我展开Collapsible 1-3它还应该展开Collapsible 1所以所有内容都可见):

可折叠1

  • 可折叠1-1
  • 可折叠1-2
  • 可折叠1-3

我使用的代码可以在这里找到:

HTML:

<button id="button">Toggle Expand/Collapse</button>
<div id="wrapper" class="open">
  <ul id="list">
    <li>Item</li>
    <li>Item</li>
    <li>Item</li>
    <li>Item</li>
  </ul>
</div>

CSS:

#wrapper {
background: #ccc;
overflow: hidden;
transition: height 200ms;
}    

JS:

$(function() {
var b = $("#button");
var w = $("#wrapper");
var l = $("#list");

w.height(l.outerHeight(true));

b.click(function() {

 if(w.hasClass('open')) {
   w.removeClass('open');
   w.height(0);
 } else {
  w.addClass('open');
  w.height(l.outerHeight(true));
 }

 });
 });

1 个答案:

答案 0 :(得分:0)

您可以使用.slideDown.slideUp代替计算身高。

$(document).ready(function() {
  $('#button').click(function() {
    $('#wrapper').toggleClass('open').slideToggle(200);
  });
});
#wrapper {
  background: #ccc;
  overflow: hidden;
  /*transition: height 200ms;*/
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="button">Toggle Expand/Collapse</button>
<div id="wrapper" class="open">
  <ul id="list">
    <li>Item</li>
    <li>Item</li>
    <li>Item</li>
    <li>Item</li>
  </ul>
</div>