X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/a39ce20a7f4d01f30508c4d003e6d973298866c6..39e235fcc4bffec8893cf9a2f8924303c7b3a859:/project/static/js/jquery.autoscroll.js diff --git a/project/static/js/jquery.autoscroll.js b/project/static/js/jquery.autoscroll.js index c342bdf5..f8c07fbd 100644 --- a/project/static/js/jquery.autoscroll.js +++ b/project/static/js/jquery.autoscroll.js @@ -1,6 +1,7 @@ (function($) { $.fn.autoscroll = function(synchronizeWith, options) { - var self = $(this); + var $this = $(this); + var self = $this; var selfContainer = self.parent(); var synchronizeWith = $(synchronizeWith); var synchronizeWithContainer = synchronizeWith.parent(); @@ -17,15 +18,30 @@ synchronizeWithContainer = $('body', eventContainer); synchronizeWith = synchronizeWithContainer; } - - synchronizeWithContainer.data('autoscroll.lastCheckedScrollTop', synchronizeWithContainer.scrollTop()); + + $this.data('autoscroll:enabled', true); + synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop', synchronizeWithContainer.scrollTop()); eventContainer.scroll(function() { - var distanceScrolled = synchronizeWithContainer.scrollTop() - synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop'); - var percentScrolled = distanceScrolled / synchronizeWith.height(); - selfContainer.scrollTop(selfContainer.scrollTop() + percentScrolled * self.height()); + if ($this.data('autoscroll:enabled')) { + var distanceScrolled = synchronizeWithContainer.scrollTop() - synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop'); + var percentScrolled = distanceScrolled / synchronizeWith.height(); + selfContainer.scrollTop(selfContainer.scrollTop() + percentScrolled * self.height()); + } synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop', synchronizeWithContainer.scrollTop()); }); - }; + }, + + $.fn.enableAutoscroll = function() { + $(this).data('autoscroll:enabled', true); + }, + + $.fn.disableAutoscroll = function() { + $(this).data('autoscroll:enabled', false); + }, + + $.fn.toggleAutoscroll = function() { + $(this).data('autoscroll:enabled', !$(this).data('autoscroll:enabled')); + } })(jQuery);