aboutsummaryrefslogtreecommitdiff
path: root/js/dropdown.js
diff options
context:
space:
mode:
authorJacob Thornton <[email protected]>2013-05-24 23:15:04 -0700
committerJacob Thornton <[email protected]>2013-05-24 23:15:04 -0700
commitf3e45c37780b12a3fa96e7d4578f38a883cba9a0 (patch)
tree935a3cf3c892f2db38842e351cd9ddd53ff37c36 /js/dropdown.js
parentf820de4b325c4a9049c822374701efd2bcb7e26e (diff)
downloadbootstrap-f3e45c37780b12a3fa96e7d4578f38a883cba9a0.tar.xz
bootstrap-f3e45c37780b12a3fa96e7d4578f38a883cba9a0.zip
add show/shown hide/hidden events to dropdown + update dropdown links for testing + catch a few missed namespace things
Diffstat (limited to 'js/dropdown.js')
-rw-r--r--js/dropdown.js30
1 files changed, 20 insertions, 10 deletions
diff --git a/js/dropdown.js b/js/dropdown.js
index 39c4ad258..2bb789a79 100644
--- a/js/dropdown.js
+++ b/js/dropdown.js
@@ -26,10 +26,7 @@
var backdrop = '.dropdown-backdrop'
var toggle = '[data-toggle=dropdown]'
var Dropdown = function (element) {
- var $el = $(element).on('click.dropdown.data-api', this.toggle)
- $('html').on('click.dropdown.data-api', function () {
- $el.parent().removeClass('open')
- })
+ var $el = $(element).on('click.bs.dropdown', this.toggle)
}
Dropdown.prototype.toggle = function (e) {
@@ -47,7 +44,14 @@
// if mobile we we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
}
- $parent.toggleClass('open')
+
+ $parent.trigger(e = $.Event('show.bs.dropdown'))
+
+ if (e.isDefaultPrevented()) return
+
+ $parent
+ .toggleClass('open')
+ .trigger('shown.bs.dropdown')
}
$this.focus()
@@ -88,7 +92,13 @@
function clearMenus() {
$(backdrop).remove()
- $(toggle).each(function () { getParent($(this)).removeClass('open') })
+ $(toggle).each(function (e) {
+ var $parent = getParent($(this))
+ if (!$parent.hasClass('open')) return
+ $parent.trigger(e = $.Event('hide.bs.dropdown'))
+ if (e.isDefaultPrevented()) return
+ $parent.removeClass('open').trigger('hidden.bs.dropdown')
+ })
}
function getParent($this) {
@@ -137,9 +147,9 @@
$(document)
- .on('click.dropdown.data-api', clearMenus)
- .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
- .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
- .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+ .on('click.bs.dropdown.data-api', clearMenus)
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
+ .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
}(window.jQuery);