aboutsummaryrefslogtreecommitdiff
path: root/js/src/dropdown.js
diff options
context:
space:
mode:
authorfat <[email protected]>2015-05-13 12:48:34 -0700
committerfat <[email protected]>2015-05-13 12:48:34 -0700
commitf8b2569ec8956a1f4d09fe6fc9865bd200ecde43 (patch)
tree190263c441212d1ba91507d385fe3e6bc33e2614 /js/src/dropdown.js
parentdafdd180cd54a2e238fe715d8aeb83c07f385a18 (diff)
downloadbootstrap-f8b2569ec8956a1f4d09fe6fc9865bd200ecde43.tar.xz
bootstrap-f8b2569ec8956a1f4d09fe6fc9865bd200ecde43.zip
implement global dispose method
Diffstat (limited to 'js/src/dropdown.js')
-rw-r--r--js/src/dropdown.js45
1 files changed, 31 insertions, 14 deletions
diff --git a/js/src/dropdown.js b/js/src/dropdown.js
index 3135ca73a..bae0f7adb 100644
--- a/js/src/dropdown.js
+++ b/js/src/dropdown.js
@@ -20,16 +20,18 @@ const Dropdown = (($) => {
const NAME = 'dropdown'
const VERSION = '4.0.0'
const DATA_KEY = 'bs.dropdown'
+ const EVENT_KEY = `.${DATA_KEY}`
+ const DATA_API_KEY = '.data-api'
const JQUERY_NO_CONFLICT = $.fn[NAME]
const Event = {
- HIDE   : 'hide.bs.dropdown',
- HIDDEN   : 'hidden.bs.dropdown',
- SHOW   : 'show.bs.dropdown',
- SHOWN   : 'shown.bs.dropdown',
- CLICK   : 'click.bs.dropdown',
- KEYDOWN   : 'keydown.bs.dropdown.data-api',
- CLICK_DATA : 'click.bs.dropdown.data-api'
+ HIDE   : `hide${EVENT_KEY}`,
+ HIDDEN   : `hidden${EVENT_KEY}`,
+ SHOW   : `show${EVENT_KEY}`,
+ SHOWN   : `shown${EVENT_KEY}`,
+ CLICK   : `click${EVENT_KEY}`,
+ CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,
+ KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`
}
const ClassName = {
@@ -59,7 +61,9 @@ const Dropdown = (($) => {
class Dropdown {
constructor(element) {
- $(element).on(Event.CLICK, this.toggle)
+ this._element = element
+
+ this._addEventListeners()
}
@@ -114,6 +118,19 @@ const Dropdown = (($) => {
return false
}
+ dispose() {
+ $.removeData(this._element, DATA_KEY)
+ $(this._element).off(EVENT_KEY)
+ this._element = null
+ }
+
+
+ // private
+
+ _addEventListeners() {
+ $(this._element).on(Event.CLICK, this.toggle)
+ }
+
// static
@@ -239,12 +256,12 @@ const Dropdown = (($) => {
*/
$(document)
- .on(Event.KEYDOWN, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)
- .on(Event.KEYDOWN, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler)
- .on(Event.KEYDOWN, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler)
- .on(Event.CLICK_DATA, Dropdown._clearMenus)
- .on(Event.CLICK_DATA, Selector.DATA_TOGGLE, Dropdown.prototype.toggle)
- .on(Event.CLICK_DATA, Selector.FORM_CHILD, function (e) {
+ .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)
+ .on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler)
+ .on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler)
+ .on(Event.CLICK_DATA_API, Dropdown._clearMenus)
+ .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle)
+ .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
e.stopPropagation()
})