Skip to content

Commit 0badcf1

Browse files
committed
Reset element state before each refresh
1 parent 680e2b1 commit 0badcf1

File tree

3 files changed

+25
-81
lines changed

3 files changed

+25
-81
lines changed

jquery.stellar.js

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@
2828
scrollProperty = {
2929
scroll: {
3030
getLeft: function($elem) { return $elem.scrollLeft(); },
31-
setLeft: function($elem, val) { $elem.scrollLeft(val); },
32-
33-
getTop: function($elem) { return $elem.scrollTop(); },
34-
setTop: function($elem, val) { $elem.scrollTop(val); }
31+
getTop: function($elem) { return $elem.scrollTop(); }
3532
},
3633
position: {
3734
getLeft: function($elem) { return parseInt($elem.css('left'), 10) * -1; },
@@ -174,18 +171,7 @@
174171
},
175172
_defineSetters: function() {
176173
var self = this,
177-
scrollPropertyAdapter = scrollProperty[self.options.scrollProperty],
178-
positionPropertyAdapter = positionProperty[self.options.positionProperty],
179-
setScrollLeft = scrollPropertyAdapter.setLeft,
180-
setScrollTop = scrollPropertyAdapter.setTop;
181-
182-
this._setScrollLeft = (typeof setScrollLeft === 'function' ? function(val) {
183-
setScrollLeft(self.$scrollElement, val);
184-
} : $.noop);
185-
186-
this._setScrollTop = (typeof setScrollTop === 'function' ? function(val) {
187-
setScrollTop(self.$scrollElement, val);
188-
} : $.noop);
174+
positionPropertyAdapter = positionProperty[self.options.positionProperty];
189175

190176
this._setPosition = positionPropertyAdapter.setPosition ||
191177
function($elem, left, startingLeft, top, startingTop) {
@@ -217,33 +203,13 @@
217203
});
218204
},
219205
refresh: function(options) {
220-
var self = this,
221-
oldLeft = self._getScrollLeft(),
222-
oldTop = self._getScrollTop();
223-
224-
this._setScrollLeft(0);
225-
this._setScrollTop(0);
206+
if (!options || !options.firstLoad) {
207+
this._reset();
208+
}
226209

227210
this._setOffsets();
228211
this._findParticles();
229212
this._findBackgrounds();
230-
231-
// Fix for WebKit background rendering bug
232-
if (options && options.firstLoad && /WebKit/.test(navigator.userAgent)) {
233-
$(window).load(function() {
234-
var oldLeft = self._getScrollLeft(),
235-
oldTop = self._getScrollTop();
236-
237-
self._setScrollLeft(oldLeft + 1);
238-
self._setScrollTop(oldTop + 1);
239-
240-
self._setScrollLeft(oldLeft);
241-
self._setScrollTop(oldTop);
242-
});
243-
}
244-
245-
this._setScrollLeft(oldLeft);
246-
this._setScrollTop(oldTop);
247213
},
248214
_detectViewport: function() {
249215
var viewportOffsets = this.$viewportElement.offset(),
@@ -449,7 +415,7 @@
449415
});
450416
});
451417
},
452-
destroy: function() {
418+
_reset: function() {
453419
var particle,
454420
startingPositionLeft,
455421
startingPositionTop,
@@ -470,8 +436,14 @@
470436

471437
for (i = this.backgrounds.length - 1; i >= 0; i--) {
472438
background = this.backgrounds[i];
439+
440+
background.$element.data('stellar-backgroundStartingLeft', null).data('stellar-backgroundStartingTop', null);
441+
473442
setBackgroundPosition(background.$element, background.startingValueLeft, background.startingValueTop);
474443
}
444+
},
445+
destroy: function() {
446+
this._reset();
475447

476448
this.$scrollElement.unbind('resize.' + this.name).unbind('scroll.' + this.name);
477449
this._animationLoop = $.noop;

0 commit comments

Comments
 (0)