Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorJacob Thornton <jacobthornton@gmail.com>2012-04-15 08:44:57 +0400
committerJacob Thornton <jacobthornton@gmail.com>2012-04-15 08:44:57 +0400
commitd65f7f204a918906d7ce5120b9719abf105d60c5 (patch)
tree2b97ca12d841b2c10eb89fa1854cbaef01d440a6 /js
parent82267d48ffb522ed4c9cb491660f7d1c8a9e0236 (diff)
don't open dropdown if target is disabled
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 f27f4d2f43..411c2f7bfd 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')
+ , selector
, $parent
, 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 368ced2a5a..4e52c8485e 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">'