aboutsummaryrefslogtreecommitdiff
path: root/js/src/scrollspy.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/scrollspy.js
parentdafdd180cd54a2e238fe715d8aeb83c07f385a18 (diff)
downloadbootstrap-f8b2569ec8956a1f4d09fe6fc9865bd200ecde43.tar.xz
bootstrap-f8b2569ec8956a1f4d09fe6fc9865bd200ecde43.zip
implement global dispose method
Diffstat (limited to 'js/src/scrollspy.js')
-rw-r--r--js/src/scrollspy.js25
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--;) {