1
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-08-24 06:03:10 +02:00

implement global dispose method

This commit is contained in:
fat
2015-05-13 12:48:34 -07:00
parent dafdd180cd
commit f8b2569ec8
45 changed files with 976 additions and 439 deletions

View File

@@ -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()
})