From 4a7f27356afb7814698c3804615f8c8d6b224f8f Mon Sep 17 00:00:00 2001 From: Hyunje Alex Jun Date: Wed, 11 Mar 2015 22:02:38 +0900 Subject: [PATCH] Change the way to re-attach rails when they're detached. Instead of destroying and re-initialising the plugin, just re-append them. --- src/js/plugin/update-geometry.js | 7 +++++++ src/js/plugin/update.js | 21 ++++++--------------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/js/plugin/update-geometry.js b/src/js/plugin/update-geometry.js index 86e6fcc..1548c17 100644 --- a/src/js/plugin/update-geometry.js +++ b/src/js/plugin/update-geometry.js @@ -60,6 +60,13 @@ module.exports = function (element) { i.contentWidth = element.scrollWidth; i.contentHeight = element.scrollHeight; + if (!element.contains(i.scrollbarXRail)) { + d.appendTo(i.scrollbarXRail, element); + } + if (!element.contains(i.scrollbarYRail)) { + d.appendTo(i.scrollbarYRail, element); + } + if (!i.settings.suppressScrollX && i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth) { i.scrollbarXActive = true; i.railXWidth = i.containerWidth - i.railXMarginWidth; diff --git a/src/js/plugin/update.js b/src/js/plugin/update.js index 0e09994..308a9df 100644 --- a/src/js/plugin/update.js +++ b/src/js/plugin/update.js @@ -4,27 +4,18 @@ 'use strict'; var d = require('../lib/dom') - , destroy = require('./destroy') - , initialize = require('./initialize') , instances = require('./instances') , updateGeometry = require('./update-geometry'); module.exports = function (element) { var i = instances.get(element); - if (!i.scrollbarXRail || !element.contains(i.scrollbarXRail) || - !i.scrollbarYRail || !element.contains(i.scrollbarYRail)) { - // If there's something wrong in the plugin, re-initialise. - destroy(element); - initialize(element); - } else { - // Hide scrollbars not to affect scrollWidth and scrollHeight - d.css(i.scrollbarXRail, 'display', 'none'); - d.css(i.scrollbarYRail, 'display', 'none'); + // Hide scrollbars not to affect scrollWidth and scrollHeight + d.css(i.scrollbarXRail, 'display', 'none'); + d.css(i.scrollbarYRail, 'display', 'none'); - updateGeometry(element); + updateGeometry(element); - d.css(i.scrollbarXRail, 'display', 'block'); - d.css(i.scrollbarYRail, 'display', 'block'); - } + d.css(i.scrollbarXRail, 'display', 'block'); + d.css(i.scrollbarYRail, 'display', 'block'); };