Browse Source

Fix issue with destroy in visibility

pull/2034/head
jlukic 9 years ago
parent
commit
b685c948e0
2 changed files with 38 additions and 21 deletions
  1. 38
      src/definitions/behaviors/visibility.js
  2. 21
      src/definitions/modules/sticky.js

38
src/definitions/behaviors/visibility.js

@ -42,10 +42,11 @@ $.fn.visibility = function(parameters) {
moduleNamespace = 'module-' + namespace,
$window = $(window),
$module = $(this),
$context = $(settings.context),
selector = $module.selector || '',
instance = $module.data(moduleNamespace),
requestAnimationFrame = window.requestAnimationFrame
@ -75,13 +76,16 @@ $.fn.visibility = function(parameters) {
if(settings.type == 'fixed') {
module.setup.fixed();
}
if(settings.observeChanges) {
module.observeChanges();
}
if( !module.is.visible() ) {
module.error(error.visible, $module);
}
}
if(settings.initialCheck) {
module.checkVisibility();
}
if(settings.observeChanges) {
module.observeChanges();
}
module.instantiate();
},
@ -98,9 +102,11 @@ $.fn.visibility = function(parameters) {
if(observer) {
observer.disconnect();
}
$window.off('load' + eventNamespace);
$window.off('resize' + eventNamespace);
$context.off('scrollchange' + eventNamespace);
$window
.off('load' + eventNamespace, module.event.load)
.off('resize' + eventNamespace, module.event.resize)
;
$context.off('scrollchange' + eventNamespace, module.event.scrollchange);
$module
.off(eventNamespace)
.removeData(moduleNamespace)
@ -128,8 +134,8 @@ $.fn.visibility = function(parameters) {
events: function() {
module.verbose('Binding visibility events to scroll and resize');
$window
.on('load' + eventNamespace, module.event.refresh)
.on('resize' + eventNamespace, module.event.refresh)
.on('load' + eventNamespace, module.event.load)
.on('resize' + eventNamespace, module.event.resize)
;
// pub/sub pattern
$context
@ -173,10 +179,13 @@ $.fn.visibility = function(parameters) {
},
event: {
refresh: function() {
resize: function() {
requestAnimationFrame(module.refresh);
},
load: function() {
requestAnimationFrame(module.refresh);
},
// published event
// publishes scrollchange event on one scroll
scroll: function() {
if(settings.throttle) {
clearTimeout(module.timer);
@ -190,7 +199,7 @@ $.fn.visibility = function(parameters) {
});
}
},
// subscribed event
// subscribes to scrollchange
scrollchange: function(event, scrollPosition) {
module.checkVisibility(scrollPosition);
},
@ -225,7 +234,7 @@ $.fn.visibility = function(parameters) {
should: {
trackChanges: function() {
if(methodInvoked && queryArguments.length > 0) {
if(methodInvoked) {
module.debug('One time query, no need to bind events');
return false;
}
@ -1073,7 +1082,8 @@ $.fn.visibility.settings = {
},
error : {
method : 'The method you called is not defined.'
method : 'The method you called is not defined.',
visible : 'Element is hidden, you must call refresh after element becomes visible'
}
};

21
src/definitions/modules/sticky.js

@ -87,14 +87,18 @@ $.fn.sticky = function(parameters) {
},
destroy: function() {
module.verbose('Destroying previous module');
module.verbose('Destroying previous instance');
module.reset();
if(observer) {
observer.disconnect();
}
$window.off('load' + eventNamespace);
$window.off('resize' + eventNamespace);
$scroll.off('scrollchange' + eventNamespace);
$window
.off('load' + eventNamespace, module.event.load)
.off('resize' + eventNamespace, module.event.resize)
;
$scroll
.off('scrollchange' + eventNamespace, module.event.scrollchange)
;
$module.removeData(moduleNamespace);
},
@ -149,8 +153,8 @@ $.fn.sticky = function(parameters) {
bind: {
events: function() {
$window
.on('load' + eventNamespace, module.event.refresh)
.on('resize' + eventNamespace, module.event.refresh)
.on('load' + eventNamespace, module.event.load)
.on('resize' + eventNamespace, module.event.resize)
;
// pub/sub pattern
$scroll
@ -162,7 +166,10 @@ $.fn.sticky = function(parameters) {
},
event: {
refresh: function() {
load: function() {
requestAnimationFrame(module.refresh);
},
resize: function() {
requestAnimationFrame(module.refresh);
},
scroll: function() {

Loading…
Cancel
Save