1
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-08-27 07:14:36 +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,6 +20,8 @@ const ScrollSpy = (($) => {
const NAME = 'scrollspy'
const VERSION = '4.0.0'
const DATA_KEY = 'bs.scrollspy'
const EVENT_KEY = `.${DATA_KEY}`
const DATA_API_KEY = '.data-api'
const JQUERY_NO_CONFLICT = $.fn[NAME]
const Default = {
@@ -27,9 +29,9 @@ const ScrollSpy = (($) => {
}
const Event = {
ACTIVATE : 'activate.bs.scrollspy',
SCROLL : 'scroll.bs.scrollspy',
LOAD : 'load.bs.scrollspy.data-api'
ACTIVATE : `activate${EVENT_KEY}`,
SCROLL : `scroll${EVENT_KEY}`,
LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`
}
const ClassName = {
@@ -54,6 +56,7 @@ const ScrollSpy = (($) => {
class ScrollSpy {
constructor(element, config) {
this._element = element
this._scrollElement = element.tagName === 'BODY' ? window : element
this._config = $.extend({}, Default, config)
this._selector = `${this._config.target || ''} .nav li > a`
@@ -123,6 +126,20 @@ const ScrollSpy = (($) => {
})
}
dispose() {
$.removeData(this._element, DATA_KEY)
$(this._scrollElement).off(EVENT_KEY)
this._element = null
this._scrollElement = null
this._config = null
this._selector = null
this._offsets = null
this._targets = null
this._activeTarget = null
this._scrollHeight = null
}
// private
@@ -244,7 +261,7 @@ const ScrollSpy = (($) => {
* ------------------------------------------------------------------------
*/
$(window).on(Event.LOAD, function () {
$(window).on(Event.LOAD_DATA_API, function () {
let scrollSpys = $.makeArray($(Selector.DATA_SPY))
for (let i = scrollSpys.length; i--;) {