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/scrollspy.js | |
| parent | dafdd180cd54a2e238fe715d8aeb83c07f385a18 (diff) | |
| download | bootstrap-f8b2569ec8956a1f4d09fe6fc9865bd200ecde43.tar.xz bootstrap-f8b2569ec8956a1f4d09fe6fc9865bd200ecde43.zip | |
implement global dispose method
Diffstat (limited to 'js/src/scrollspy.js')
| -rw-r--r-- | js/src/scrollspy.js | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/js/src/scrollspy.js b/js/src/scrollspy.js index 763d133e8..d1be3a45f 100644 --- a/js/src/scrollspy.js +++ b/js/src/scrollspy.js @@ -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--;) { |
