Bootstrap Collapse – Jquery“全部折叠”function
我正在前端使用Bootstrap编写个人提要阅读器,并希望添加“折叠/全部展开”按钮。
这是我的第一个JavaScript / JQuery代码,所以我不知道除了在Firefox Developer Console中打印变量之外如何调试它。
我的页面结构由面板组成。 用户可以通过单击面板标题来展开或折叠面板。 还有一个折叠或展开所有面板的按钮。
我的解决方案大部分时间都有效,但我注意到了一个奇怪的行为。 以下是我重现问题的方法:
- 第一次打开页面
- 单击其标题展开一个面板
- 现在,折叠全部按钮会折叠打开的面板,并展开其他按钮。 好像它“切换”所有面板而不是关闭它们。
- 在这种奇怪的行为之后,一切都很正常,我无法在不刷新页面的情况下重现问题。 在每一步中,
open_panel_count
变量看起来都很正常。
这是我正在使用的方法:
$(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(); }); });
谁能指出我做错了什么?
您可以在以下url查看整个模板: https : //github.com/utdemir/furby/blob/master/template.erb并访问以下url获取演示: http : //p.cogunluklazararsiz.org/furby/
根据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"
。 艰难地调试没有小提琴。
$('.panel-collapse').collapse('hide');
Bootstrap / JQuery Collapse
尝试改变
$('#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); });