aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/bootstrap-dropdown.js6
-rw-r--r--js/tests/unit/bootstrap-dropdown.js34
2 files changed, 39 insertions, 1 deletions
diff --git a/js/bootstrap-dropdown.js b/js/bootstrap-dropdown.js
index f27f4d2f4..d856ba6ec 100644
--- a/js/bootstrap-dropdown.js
+++ b/js/bootstrap-dropdown.js
@@ -40,10 +40,14 @@
, toggle: function (e) {
var $this = $(this)
- , selector = $this.attr('data-target')
, $parent
+ , selector
, isActive
+ if ($this.is('.disabled, :disabled')) return
+
+ selector = $this.attr('data-target')
+
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
diff --git a/js/tests/unit/bootstrap-dropdown.js b/js/tests/unit/bootstrap-dropdown.js
index 368ced2a5..4e52c8485 100644
--- a/js/tests/unit/bootstrap-dropdown.js
+++ b/js/tests/unit/bootstrap-dropdown.js
@@ -10,6 +10,40 @@ $(function () {
ok($(document.body).dropdown()[0] == document.body, 'document.body returned')
})
+ test("should not open dropdown if target is disabled", function () {
+ var dropdownHTML = '<ul class="tabs">'
+ + '<li class="dropdown">'
+ + '<button disabled href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>'
+ + '<ul class="dropdown-menu">'
+ + '<li><a href="#">Secondary link</a></li>'
+ + '<li><a href="#">Something else here</a></li>'
+ + '<li class="divider"></li>'
+ + '<li><a href="#">Another link</a></li>'
+ + '</ul>'
+ + '</li>'
+ + '</ul>'
+ , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
+
+ ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
+ })
+
+ test("should not open dropdown if target is disabled", function () {
+ var dropdownHTML = '<ul class="tabs">'
+ + '<li class="dropdown">'
+ + '<button href="#" class="btn dropdown-toggle disabled" data-toggle="dropdown">Dropdown</button>'
+ + '<ul class="dropdown-menu">'
+ + '<li><a href="#">Secondary link</a></li>'
+ + '<li><a href="#">Something else here</a></li>'
+ + '<li class="divider"></li>'
+ + '<li><a href="#">Another link</a></li>'
+ + '</ul>'
+ + '</li>'
+ + '</ul>'
+ , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
+
+ ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
+ })
+
test("should add class open to menu if clicked", function () {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'