所以,我想在滚动时只触发一次函数(使用
Scrollstop,由stackoverflow答案给出)
问题是我不能只触发一次这个功能.我尝试了不同的解决方案(.on(),设置一个计数器,将其设置在window.scrollstop函数的外部/内部)但没有任何效果.
我不认为这很困难,但是到目前为止我没有让它成功.
这是我正在使用的插件
$.fn.scrollStopped = function(callback) { $(this).scroll(function(){ var self = this,$this = $(self); if ($this.data('scrollTimeout')) { clearTimeout($this.data('scrollTimeout')); } $this.data('scrollTimeout',setTimeout(callback,300,self)); }); };
这是我的代码:
$(window).scrollStopped(function(){ if ($(".drawing1").withinViewport()) { doNothing() } }) var doNothing = function() { $('#drawing1').lazylinepainter('paint'); }
(删除了计数器,因为它不起作用)
PS:我想做的功能只有一次是lazyPaint.它在我们滚动到元素时开始,但在它结束时再次触发.
解决方法
如何使用变量来查看它是否先前被触发:
var fired = 0; $.fn.scrollStopped = function(callback) { $(this).scroll(function(){ if(fired == 0){ var self = this,$this = $(self); if ($this.data('scrollTimeout')) { clearTimeout($this.data('scrollTimeout')); } $this.data('scrollTimeout',self)); fired = 1; } }); };