mirror of
https://github.com/twbs/bootstrap.git
synced 2022-11-09 12:25:43 -05:00
Fixed bug in dropdown toggle where menu would only clear on the first drop down
This commit is contained in:
parent
0540b63ab0
commit
e9a648cd39
4 changed files with 53 additions and 10 deletions
7
docs/assets/js/bootstrap-dropdown.js
vendored
7
docs/assets/js/bootstrap-dropdown.js
vendored
|
@ -99,9 +99,10 @@
|
|||
|
||||
}
|
||||
|
||||
function clearMenus() {
|
||||
getParent($(toggle))
|
||||
.removeClass('open')
|
||||
function clearMenus() {
|
||||
$(toggle).each(function () {
|
||||
getParent($(this)).removeClass("open")
|
||||
})
|
||||
}
|
||||
|
||||
function getParent($this) {
|
||||
|
|
7
docs/assets/js/bootstrap.js
vendored
7
docs/assets/js/bootstrap.js
vendored
|
@ -674,9 +674,10 @@
|
|||
|
||||
}
|
||||
|
||||
function clearMenus() {
|
||||
getParent($(toggle))
|
||||
.removeClass('open')
|
||||
function clearMenus() {
|
||||
$(toggle).each(function () {
|
||||
getParent($(this)).removeClass("open")
|
||||
})
|
||||
}
|
||||
|
||||
function getParent($this) {
|
||||
|
|
7
js/bootstrap-dropdown.js
vendored
7
js/bootstrap-dropdown.js
vendored
|
@ -99,9 +99,10 @@
|
|||
|
||||
}
|
||||
|
||||
function clearMenus() {
|
||||
getParent($(toggle))
|
||||
.removeClass('open')
|
||||
function clearMenus() {
|
||||
$(toggle).each(function () {
|
||||
getParent($(this)).removeClass("open")
|
||||
})
|
||||
}
|
||||
|
||||
function getParent($this) {
|
||||
|
|
42
js/tests/unit/bootstrap-dropdown.js
vendored
42
js/tests/unit/bootstrap-dropdown.js
vendored
|
@ -7,7 +7,8 @@ $(function () {
|
|||
})
|
||||
|
||||
test("should return element", function () {
|
||||
ok($(document.body).dropdown()[0] == document.body, 'document.body returned')
|
||||
var el = $("<div />")
|
||||
ok(el.dropdown()[0] === el[0], 'same element returned')
|
||||
})
|
||||
|
||||
test("should not open dropdown if target is disabled", function () {
|
||||
|
@ -102,4 +103,43 @@ $(function () {
|
|||
dropdown.remove()
|
||||
})
|
||||
|
||||
test("should remove open class if body clicked, with multiple drop downs", function () {
|
||||
var dropdownHTML =
|
||||
'<ul class="nav">'
|
||||
+ ' <li><a href="#menu1">Menu 1</a></li>'
|
||||
+ ' <li class="dropdown" id="testmenu">'
|
||||
+ ' <a class="dropdown-toggle" data-toggle="dropdown" href="#testmenu">Test menu <b class="caret"></b></a>'
|
||||
+ ' <ul class="dropdown-menu" role="menu">'
|
||||
+ ' <li><a href="#sub1">Submenu 1</a></li>'
|
||||
+ ' </ul>'
|
||||
+ ' </li>'
|
||||
+ '</ul>'
|
||||
+ '<div class="btn-group">'
|
||||
+ ' <button class="btn">Actions</button>'
|
||||
+ ' <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>'
|
||||
+ ' <ul class="dropdown-menu">'
|
||||
+ ' <li><a href="#">Action 1</a></li>'
|
||||
+ ' </ul>'
|
||||
+ '</div>'
|
||||
, dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]')
|
||||
, first = dropdowns.first()
|
||||
, last = dropdowns.last()
|
||||
|
||||
ok(dropdowns.length == 2, "Should be two dropdowns")
|
||||
|
||||
first.click()
|
||||
ok(first.parents('.open').length == 1, 'open class added on click')
|
||||
ok($('#qunit-fixture .open').length == 1, 'only one object is open')
|
||||
$('body').click()
|
||||
ok($("#qunit-fixture .open").length === 0, 'open class removed')
|
||||
|
||||
last.click()
|
||||
ok(last.parent('.open').length == 1, 'open class added on click')
|
||||
ok($('#qunit-fixture .open').length == 1, 'only one object is open')
|
||||
$('body').click()
|
||||
ok($("#qunit-fixture .open").length === 0, 'open class removed')
|
||||
|
||||
$("#qunit-fixture").html("")
|
||||
})
|
||||
|
||||
})
|
Loading…
Reference in a new issue