Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Twitter Bootstrap button click to toggle expand/collapse text section above button

I have recently come accross bootstrap and I am working on extending the hero example. I want to add the following behaviour to my page:

When a button (i.e. an element with selector '.row .btn') is clicked on, I want to be able to toggle between expanding/collapsing the portion of text above the button.

This is what the HTML looks like:

<html>   <head>       <title>Test Page</title>     <!-- Le styles -->     <link href="../assets/css/bootstrap.css" rel="stylesheet">     <style type="text/css">       body {         padding-top: 60px;         padding-bottom: 40px;       }     </style>     <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">   </head>   <body>     <div class="navbar navbar-fixed-top">     </div>      <div class="container">       <div class="hero-unit">         <h1>Hello, world!</h1>         <p>Blah, blah.</p>         <p><a class="btn btn-primary btn-large">Learn more &raquo;</a></p>       </div>        <!-- Example row of columns -->       <div class="row">         <div class="span4">           <h2>Heading</h2>            <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>           <p><a class="btn" href="#">View details &raquo;</a></p>         </div>       </div>     <!-- Placed at the end of the document so the pages load faster -->     <script src="../assets/js/jquery.js"></script>     <script src="../assets/js/bootstrap-transition.js"></script>     <script src="../assets/js/bootstrap-alert.js"></script>     <script src="../assets/js/bootstrap-modal.js"></script>     <script src="../assets/js/bootstrap-dropdown.js"></script>     <script src="../assets/js/bootstrap-scrollspy.js"></script>     <script src="../assets/js/bootstrap-tab.js"></script>     <script src="../assets/js/bootstrap-tooltip.js"></script>     <script src="../assets/js/bootstrap-popover.js"></script>     <script src="../assets/js/bootstrap-button.js"></script>     <script src="../assets/js/bootstrap-collapse.js"></script>     <script src="../assets/js/bootstrap-carousel.js"></script>     <script src="../assets/js/bootstrap-typeahead.js"></script>    </body> </html> 

I can hack this using jQuery, but maybe there is a way of doing it the Bootstrap way? - i.e. using the Bootstrap API?

like image 862
Homunculus Reticulli Avatar asked Aug 15 '12 10:08

Homunculus Reticulli


2 Answers

It's possible to do this without using extra JS code using the data-collapse and data-target attributes on the a link.

e.g.

<a class="btn" data-toggle="collapse" data-target="#viewdetails">View details &raquo;</a> 

Here's a working example.

like image 122
Taylor Gautier Avatar answered Oct 12 '22 04:10

Taylor Gautier


Based on the doc

<div class="row">     <div class="span4 collapse-group">         <h2>Heading</h2>         <p class="collapse">Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>         <p><a class="btn" href="#">View details &raquo;</a></p>     </div> </div> 
$('.row .btn').on('click', function(e) {     e.preventDefault();     var $this = $(this);     var $collapse = $this.closest('.collapse-group').find('.collapse');     $collapse.collapse('toggle'); }); 

Working demo.

like image 23
Sherbrow Avatar answered Oct 12 '22 04:10

Sherbrow