Bootstrap Collapse - Jquery"全部折叠"功能

时间:2013-09-25 20:57:23

标签: javascript jquery twitter-bootstrap

我在前端使用Bootstrap编写了一个个人提要阅读器,并希望添加一个" Collapse / Expand All"按钮。

这是我的第一个JavaScript / JQuery代码,因此除了在Firefox Developer Console中打印变量外,我不知道如何调试它。

我的页面结构由面板组成。用户可以通过单击面板标题来展开或折叠面板。还有一个折叠或展开所有面板的按钮。

我的解决方案大部分时间都有效,但我注意到了一个奇怪的行为。以下是我重现问题的方法:

  1. 第一次打开页面
  2. 点击其标题
  3. 展开一个面板
  4. 现在,折叠全部按钮会折叠打开的面板,并展开其他按钮。好像它"切换"所有面板而不是关闭它们。
  5. 在这种奇怪的行为之后,一切正常,我无法在不刷新页面的情况下重现问题。每一步open_panel_count变量看起来都很正常。
  6. 以下是我使用的方法:

    $(function() {
      open_panel_count = 0;
      function update_toggle_button() { 
        $('#toggle-btn').text((open_panel_count ? "Collapse" : "Expand") + " All")
      }
      update_toggle_button(); // Run once on page load to text #toggle-btn
    
      $('#toggle-btn').click(function() {
        $('.panel-collapse').collapse(open_panel_count ? 'hide' : 'show');
      });
    
      $('.panel-collapse').on('shown.bs.collapse', function () {
        open_panel_count++;
        update_toggle_button();
      });
    
      $('.panel-collapse').on('hidden.bs.collapse', function () {
        open_panel_count--;
        update_toggle_button();
      });
    });
    

    有谁能指出我做错了什么?

    您可以在https://github.com/utdemir/furby/blob/master/template.erb中看到整个模板 并访问演示:http://p.cogunluklazararsiz.org/furby/

3 个答案:

答案 0 :(得分:12)

$('.panel-collapse').collapse('hide');

Bootstrap/JQuery Collapse

答案 1 :(得分:8)

根据Twitter Bootstrap文档,您可以通过运行“激活您的内容作为可折叠元素。”

$('.panel-collapse').collapse({
  toggle: false
});

添加此内容可以解决您的问题。试一试。

$(function() {
  $('.panel-collapse').collapse({
    toggle: false
  });

...

http://getbootstrap.com/javascript/#collapse

不确定为什么Twitter JS没有拿起你的data-target="#entry419294611" data-toggle="collapse"。艰难地调试没有小提琴。

答案 2 :(得分:-1)

尝试更改

  $('#toggle-btn').click(function() {
    $('.panel-collapse').collapse(open_panel_count ? 'hide' : 'show');
  });

有关

  $('#toggle-btn').click(function() {
    var state = open_panel_count ? 'hide' : 'show';
    $('.panel-collapse').collapse(state);
  });