aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob <[email protected]>2013-06-27 22:36:33 -0700
committerJacob <[email protected]>2013-06-27 22:36:33 -0700
commitd23800c8283aa71fd2936750e41bff488c4c0091 (patch)
treeb16ffdcc1eff7443fb19d4e1bba287210030be16
parent88ece4fc5902f7dd9582fb4e5956062fe97af84c (diff)
parente138b0df3a1bcd536cc312d7c4714ff5bc9acd2b (diff)
downloadbootstrap-d23800c8283aa71fd2936750e41bff488c4c0091.tar.xz
bootstrap-d23800c8283aa71fd2936750e41bff488c4c0091.zip
Merge pull request #7424 from sody/3.0.0-wip
Fixes #7213 Collapse plugin does not correctly set the "collapsed" class.
-rw-r--r--js/collapse.js3
-rw-r--r--js/tests/unit/collapse.js35
2 files changed, 38 insertions, 0 deletions
diff --git a/js/collapse.js b/js/collapse.js
index b2678e0a5..7c3c20da1 100644
--- a/js/collapse.js
+++ b/js/collapse.js
@@ -145,7 +145,10 @@
|| e.preventDefault()
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
var option = $(target).data('collapse') ? 'toggle' : $this.data()
+ var parent = $this.attr('data-parent')
+ var $parent = parent && $(parent)
+ if ($parent) $parent.find('[data-toggle=collapse][data-parent=' + parent + ']').not($this).addClass('collapsed')
$this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
$(target).collapse(option)
})
diff --git a/js/tests/unit/collapse.js b/js/tests/unit/collapse.js
index dd2cee27d..73799c75d 100644
--- a/js/tests/unit/collapse.js
+++ b/js/tests/unit/collapse.js
@@ -91,4 +91,39 @@ $(function () {
target.click()
})
+ test("should remove active class from inactive accordion targets", function () {
+ $.support.transition = false
+ stop()
+
+ var accordion = $('<div id="accordion"><div class="accordion-group"></div><div class="accordion-group"></div><div class="accordion-group"></div></div>')
+ .appendTo($('#qunit-fixture'))
+
+ var target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"></a>')
+ .appendTo(accordion.find('.accordion-group').eq(0))
+
+ var collapsible1 = $('<div id="body1" class="in"></div>')
+ .appendTo(accordion.find('.accordion-group').eq(0))
+
+ var target2 = $('<a class="collapsed" data-toggle="collapse" href="#body2" data-parent="#accordion"></a>')
+ .appendTo(accordion.find('.accordion-group').eq(1))
+
+ var collapsible2 = $('<div id="body2"></div>')
+ .appendTo(accordion.find('.accordion-group').eq(1))
+
+ var target3 = $('<a class="collapsed" data-toggle="collapse" href="#body3" data-parent="#accordion"></a>')
+ .appendTo(accordion.find('.accordion-group').eq(2))
+
+ var collapsible3 = $('<div id="body3"></div>')
+ .appendTo(accordion.find('.accordion-group').eq(2))
+ .on('show.bs.collapse', function () {
+ ok(target1.hasClass('collapsed'))
+ ok(target2.hasClass('collapsed'))
+ ok(!target3.hasClass('collapsed'))
+
+ start()
+ })
+
+ target3.click()
+ })
+
})