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之间的东西。