[jQuery] Re: animate() canceling
I think that we can stop all animations stopping all setIntervals (with clearInterval). function stopAllAnims(){ for(var j=0;j50;j++){clearInterval(j)} } Or like a extension: $.extend({ stopAllAnims: function(){ for(var j=0;j50;j++) { clearInterval(j); }} }); On Sep 2, 10:08 am, emi polak [EMAIL PROTECTED] wrote: Hey Eric, that works like a charm. Thank you so much! Emi Polak On 9/2/07, Erik Beeson [EMAIL PROTECTED] wrote: In fact, if you find yourself wanting to do a lot of stuff when scrolling has stopped, you could add an event for it (again, untested): (function($) { var scrollTimeoutID; $(window).bind('scroll', function() { clearTimeout(scrollTimeoutID); scrollTimeoutID = setTimeout(function() { $(window).trigger('scrollstop'); }, 300); }); })(jQuery); $(document).ready(function() { var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind('scrollstop', function() { $(#label).animate({top: $(document).scrollTop() + topOffset}, slow, easein); }); }); Hope it helps. --Erik On 9/1/07, Erik Beeson [EMAIL PROTECTED] wrote: Approaching the problem a different way, how about only firing the animation if scrolling has paused for a moment? Maybe something like (untested): $(document).ready(function() { var scrollTimeoutID; var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind('scroll', function() { clearTimeout(scrollTimeoutID); scrollTimeoutID = setTimeout(function() { $(#label).animate({top: $(document).scrollTop() + topOffset}, slow, easein); }, 300); }); }); You should probably play around with that 300 to find the optimum setting for you. Hope it helps. --Erik On 9/1/07, emi polak [EMAIL PROTECTED] wrote: no luck heh? :( On 9/1/07, emi polak [EMAIL PROTECTED] wrote: Hi, I am altering the top property of a floating label in a webpage. The top adjustement is fired at page scroll, so that the label would always stay in its place. Now I would like to animate the label between its oldPosition and newPosition. So I use animate() to set the top property, but the method starts many times during the page scroll, thus creating a very buggy and slow motion. So: is there a way to cancel an already started animation, so that when scroll, the animation is first canceled and then its fired again? Here is what I'm using now: var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind(scroll, function() { var newScrollTop = $(document).scrollTop(); var newPos = newScrollTop + topOffset; $(#label).animate({ top: newPos }, slow, easein); }); Thank you! emipolak
[jQuery] Re: animate() canceling
Hey Eric, that works like a charm. Thank you so much! Emi Polak On 9/2/07, Erik Beeson [EMAIL PROTECTED] wrote: In fact, if you find yourself wanting to do a lot of stuff when scrolling has stopped, you could add an event for it (again, untested): (function($) { var scrollTimeoutID; $(window).bind('scroll', function() { clearTimeout(scrollTimeoutID); scrollTimeoutID = setTimeout(function() { $(window).trigger('scrollstop'); }, 300); }); })(jQuery); $(document).ready(function() { var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind('scrollstop', function() { $(#label).animate({top: $(document).scrollTop() + topOffset}, slow, easein); }); }); Hope it helps. --Erik On 9/1/07, Erik Beeson [EMAIL PROTECTED] wrote: Approaching the problem a different way, how about only firing the animation if scrolling has paused for a moment? Maybe something like (untested): $(document).ready(function() { var scrollTimeoutID; var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind('scroll', function() { clearTimeout(scrollTimeoutID); scrollTimeoutID = setTimeout(function() { $(#label).animate({top: $(document).scrollTop() + topOffset}, slow, easein); }, 300); }); }); You should probably play around with that 300 to find the optimum setting for you. Hope it helps. --Erik On 9/1/07, emi polak [EMAIL PROTECTED] wrote: no luck heh? :( On 9/1/07, emi polak [EMAIL PROTECTED] wrote: Hi, I am altering the top property of a floating label in a webpage. The top adjustement is fired at page scroll, so that the label would always stay in its place. Now I would like to animate the label between its oldPosition and newPosition. So I use animate() to set the top property, but the method starts many times during the page scroll, thus creating a very buggy and slow motion. So: is there a way to cancel an already started animation, so that when scroll, the animation is first canceled and then its fired again? Here is what I'm using now: var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind(scroll, function() { var newScrollTop = $(document).scrollTop(); var newPos = newScrollTop + topOffset; $(#label).animate({ top: newPos }, slow, easein); }); Thank you! emipolak
[jQuery] Re: animate() canceling
no luck heh? :( On 9/1/07, emi polak [EMAIL PROTECTED] wrote: Hi, I am altering the top property of a floating label in a webpage. The top adjustement is fired at page scroll, so that the label would always stay in its place. Now I would like to animate the label between its oldPosition and newPosition. So I use animate() to set the top property, but the method starts many times during the page scroll, thus creating a very buggy and slow motion. So: is there a way to cancel an already started animation, so that when scroll, the animation is first canceled and then its fired again? Here is what I'm using now: var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind(scroll, function() { var newScrollTop = $(document).scrollTop(); var newPos = newScrollTop + topOffset; $(#label).animate({ top: newPos }, slow, easein); }); Thank you! emipolak
[jQuery] Re: animate() canceling
Approaching the problem a different way, how about only firing the animation if scrolling has paused for a moment? Maybe something like (untested): $(document).ready(function() { var scrollTimeoutID; var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind('scroll', function() { clearTimeout(scrollTimeoutID); scrollTimeoutID = setTimeout(function() { $(#label).animate({top: $(document).scrollTop() + topOffset}, slow, easein); }, 300); }); }); You should probably play around with that 300 to find the optimum setting for you. Hope it helps. --Erik On 9/1/07, emi polak [EMAIL PROTECTED] wrote: no luck heh? :( On 9/1/07, emi polak [EMAIL PROTECTED] wrote: Hi, I am altering the top property of a floating label in a webpage. The top adjustement is fired at page scroll, so that the label would always stay in its place. Now I would like to animate the label between its oldPosition and newPosition. So I use animate() to set the top property, but the method starts many times during the page scroll, thus creating a very buggy and slow motion. So: is there a way to cancel an already started animation, so that when scroll, the animation is first canceled and then its fired again? Here is what I'm using now: var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind(scroll, function() { var newScrollTop = $(document).scrollTop(); var newPos = newScrollTop + topOffset; $(#label).animate({ top: newPos }, slow, easein); }); Thank you! emipolak
[jQuery] Re: animate() canceling
In fact, if you find yourself wanting to do a lot of stuff when scrolling has stopped, you could add an event for it (again, untested): (function($) { var scrollTimeoutID; $(window).bind('scroll', function() { clearTimeout(scrollTimeoutID); scrollTimeoutID = setTimeout(function() { $(window).trigger('scrollstop'); }, 300); }); })(jQuery); $(document).ready(function() { var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind('scrollstop', function() { $(#label).animate({top: $(document).scrollTop() + topOffset}, slow, easein); }); }); Hope it helps. --Erik On 9/1/07, Erik Beeson [EMAIL PROTECTED] wrote: Approaching the problem a different way, how about only firing the animation if scrolling has paused for a moment? Maybe something like (untested): $(document).ready(function() { var scrollTimeoutID; var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind('scroll', function() { clearTimeout(scrollTimeoutID); scrollTimeoutID = setTimeout(function() { $(#label).animate({top: $(document).scrollTop() + topOffset}, slow, easein); }, 300); }); }); You should probably play around with that 300 to find the optimum setting for you. Hope it helps. --Erik On 9/1/07, emi polak [EMAIL PROTECTED] wrote: no luck heh? :( On 9/1/07, emi polak [EMAIL PROTECTED] wrote: Hi, I am altering the top property of a floating label in a webpage. The top adjustement is fired at page scroll, so that the label would always stay in its place. Now I would like to animate the label between its oldPosition and newPosition. So I use animate() to set the top property, but the method starts many times during the page scroll, thus creating a very buggy and slow motion. So: is there a way to cancel an already started animation, so that when scroll, the animation is first canceled and then its fired again? Here is what I'm using now: var topOffset = 100; $(#label).css('top', topOffset + px); $(window).bind(scroll, function() { var newScrollTop = $(document).scrollTop(); var newPos = newScrollTop + topOffset; $(#label).animate({ top: newPos }, slow, easein); }); Thank you! emipolak