diff options
| author | fat <[email protected]> | 2015-05-13 12:48:34 -0700 |
|---|---|---|
| committer | fat <[email protected]> | 2015-05-13 12:48:34 -0700 |
| commit | f8b2569ec8956a1f4d09fe6fc9865bd200ecde43 (patch) | |
| tree | 190263c441212d1ba91507d385fe3e6bc33e2614 /js/src/dropdown.js | |
| parent | dafdd180cd54a2e238fe715d8aeb83c07f385a18 (diff) | |
| download | bootstrap-f8b2569ec8956a1f4d09fe6fc9865bd200ecde43.tar.xz bootstrap-f8b2569ec8956a1f4d09fe6fc9865bd200ecde43.zip | |
implement global dispose method
Diffstat (limited to 'js/src/dropdown.js')
| -rw-r--r-- | js/src/dropdown.js | 45 |
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() }) |
