Merge pull request #5309 from erlendfh/dropdown-bugfix

Fixed bug in dropdown toggle where menu would only clear on the first dropdown
This commit is contained in:
billy gates 2012-10-17 23:00:41 -07:00
commit d6ac499ca8
4 changed files with 53 additions and 10 deletions

View File

@ -99,9 +99,10 @@
}
function clearMenus() {
getParent($(toggle))
.removeClass('open')
function clearMenus() {
$(toggle).each(function () {
getParent($(this)).removeClass("open")
})
}
function getParent($this) {

View File

@ -676,9 +676,10 @@
}
function clearMenus() {
getParent($(toggle))
.removeClass('open')
function clearMenus() {
$(toggle).each(function () {
getParent($(this)).removeClass("open")
})
}
function getParent($this) {

View File

@ -99,9 +99,10 @@
}
function clearMenus() {
getParent($(toggle))
.removeClass('open')
function clearMenus() {
$(toggle).each(function () {
getParent($(this)).removeClass("open")
})
}
function getParent($this) {

View File

@ -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("")
})
})