jquery - Collapsing / Expanding divs?

前端 未结 3 593

Trying to create collapsible / expandable divs using jQuery, but it\'s not working for me at all... Each h3 should expand/collapse the div beneath it, and I\'m not sure why

相关标签:
3条回答
  • 2020-12-21 00:25

    I think this is what you are trying to achive

    I highly recommend the jQueryUI framework.

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>jQuery UI Accordion - Default functionality</title>
      <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
      <link rel="stylesheet" href="/resources/demos/style.css">
      <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
      <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
      <script>
      $( function() {
        $( "#accordion" ).accordion();
      } );
      </script>
    </head>
    <body>
    
    <div id="accordion">
      <h3>Section 1</h3>
      <div>
        <p>
        Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
        ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
        amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
        odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
        </p>
      </div>
      <h3>Section 2</h3>
      <div>
        <p>
        Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
        purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
        velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
        suscipit faucibus urna.
        </p>
      </div>
      <h3>Section 3</h3>
      <div>
        <p>
        Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.
        Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero
        ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis
        lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.
        </p>
        <ul>
          <li>List item one</li>
          <li>List item two</li>
          <li>List item three</li>
        </ul>
      </div>
      <h3>Section 4</h3>
      <div>
        <p>
        Cras dictum. Pellentesque habitant morbi tristique senectus et netus
        et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in
        faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia
        mauris vel est.
        </p>
        <p>
        Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.
        Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
        inceptos himenaeos.
        </p>
      </div>
    </div>
    
    
    </body>
    </html>
    
    0 讨论(0)
  • 2020-12-21 00:36

    You're selectors are just wrong. You don't need eq or gt

    $(document).ready(function () {
        $('.accordion > div').hide();
        $('.accordion> h3').click(function() {
            $(this).next('div:hidden').slideDown('fast').siblings('div:visible').slideUp('fast');
        });
    });
    

    I would change the class identified to something more general so you can reuse this in other places.

    <div class="accordion">
        <h3>Heading</h3>
        <div>cactuspants! <div>I am an inner div</div></div>
    
        <h3>Heading</h3>
        <div>Hats</div>
    
        <h3>Heading</h3>
        <div>Hi!</div>
    </div>
    

    Also, others have suggested that you just use jQueryUI, which is completely valid, unless you're not already using it or intend to use it for additional features. A s3 line function beats including an addition 32K library (the size of the minimally necessary components in a customized build).

    0 讨论(0)
  • 2020-12-21 00:39

    I just use the accordion widget with just one div inside.

    $("#accordion").accordion({
        active: false,
        collapsible: true
    });
    
    <div id="accordion">
      <h3>Section 1</h3>
      <div>
        <p>test 1 2 3</p>
      </div>
    </div> 
    

    Include this css link:

    link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"
    
    0 讨论(0)
提交回复
热议问题