window.scroll事件触发两次

无论我使用什么方法来检测页面上的滚动,事件都会被触发两次。 请参阅我尝试过的不同方法的代码。

 

要么

   $(window).scroll(function(){ alert("Why are you alerting twice?"); });  

要么

 window.onscroll = please_scroll; function please_scroll() { alert("Why are you alerting twice?"); } 

我甚至尝试过使用$ .debounce。

如果有任何用处,我会解释我要做的事情:当用户向上或向下滚动滚轮时,页面会将滚动设置为下一个全宽度内容div的动画。 我的代码已成功执行此菜单,但我也希望它在用户滚动时发生,基本上自动帮助他们滚动到我的页面的每个部分。 这是我目前用于滚动的function:

 function scrollTo(id){ // Scroll $('html,body').animate({scrollTop: $("#"+id).offset().top - 110},'slow',function(){ animation_active = "false"; }); } 

许多设备可以触发似乎再次发生的滚动事件。 只需使用超时:

 var timeout; $(window).scroll(function() { clearTimeout(timeout); timeout = setTimeout(function() { // do your stuff }, 50); }); 

你可以玩50的价值,我推荐50至150之间的东西。