Twitter Bootstrap按钮单击以切换按钮上方的展开/折叠文本部分


67

我最近遇到了引导程序,并且正在研究扩展英雄示例。我想在页面上添加以下行为:

当单击按钮(即带有选择器'.row .btn'的元素)时,我希望能够在扩展/折叠按钮上方的文本部分之间进行切换。

HTML如下所示:

<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>

我可以使用jQuery破解它,但是也许有一种Bootstrap方法可以做到这一点?-即使用Bootstrap API?

Answers:


71

根据文档

<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');
});

工作演示


简短而有趣,甚至可以在一个组中添加多个可折叠项,很好的答案。
埃瓦尔德

1
对于IE11,它只会扩展,但不会崩溃。
安东·莱因

1
该演示无法为我做任何事情。我在Mac上使用的是Chrome版本71.0.3578.98(正式版本)(64位)。
iconoclast

153

可以使用链接上的data-collapse和data-target属性而无需使用额外的JS代码来执行此操作。

例如

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

这是一个有效的例子


6
我如何切换按钮文字以说出“隐藏详细信息”,然后在单击时切换回“查看详细信息”?
迪安·理查森

3
这个答案应该是默认设置,但它变得乏味集id="guid"data-target="#guid",如果你有几个要素,可以通过以下方式解决相对选择。
Sherbrow 2013年

这不是问题,这只是正常的崩溃。.我认为OP希望扩展已经存在的文本(摘录为全文扩展)编辑:对不起,这就是我想要的。 OP :(
Unispaw

对于喜欢@DeanRichardson的其他用户,想要在“查看详细信息...”和“隐藏详细信息...”之间切换按钮文本,请参见stackoverflow.com/a/28500651/245602
George Hawkins

实际上,对于IE11,它只会扩展,而不会崩溃。
安东·莱因

30

在详细介绍Taylor Gautier的回复(对不起,我没有足够的声誉来添加评论)之后,我将回复Dean Richardson关于如何做他想做的事情,而没有任何其他JS代码。纯CSS。

您可以将其替换.btn为以下内容:

<a class="btn showdetails" data-toggle="collapse" data-target="#viewdetails"></a>

并为显示内容的时间添加一个小的CSS:

.in.collapse+a.btn.showdetails:before { 
    content:'Hide details «';
}
.collapse+a.btn.showdetails:before { 
    content:'Show details »'; 
}

这是他的修改示例


3
虽然有用,但它不能移植以允许使用i18n,这是内容不应属于CSS的原因之一。无论如何,为此+1。
豪尔赫·雷涛2014年

这是因为css是同一文件上的一个块,或者是您正在预处理CSS(以渲染Compass / Sass,缩小或类似任务)
Nazareno Lorenzo

11

我想要一个带有加号和减号按钮的“展开/折叠”容器来打开和关闭它。这使用标准的引导事件并具有动画。这是BS3。

在此处输入图片说明

HTML:

<button id="button" type="button" class="btn btn-primary" 
  data-toggle="collapse" data-target="#demo">
  <span class="glyphicon glyphicon-collapse-down"></span> Show
</button>

<div id="demo" class="collapse">
  <ol class="list-group">
      <li class="list-group-item">Warrior</li>
      <li class="list-group-item">Adventurer</li>
      <li class="list-group-item">Mage</li>
  </ol>
</div>

JS:

$(function(){
  $('#demo').on('hide.bs.collapse', function () {
    $('#button').html('<span class="glyphicon glyphicon-collapse-down"></span> Show');
  })
  $('#demo').on('show.bs.collapse', function () {
    $('#button').html('<span class="glyphicon glyphicon-collapse-up"></span> Hide');
  })
})

例:

http://plnkr.co/edit/aG5BtH?p=预览


1

的HTML:

<h4 data-toggle-selector="#me">toggle</h4>
<div id="me">content here</div>

js:

$(function () {
    $('[data-toggle-selector]').on('click',function () {
        $($(this).data('toggle-selector')).toggle(300);
    })
})
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.