【发布时间】:2014-02-25 15:13:52
【问题描述】:
无论我使用什么方法来检测页面上的滚动,都会触发两次事件。请查看我尝试过的不同方法的代码。
<body onmousewheel="alert('Why are you alerting twice?')">
或
<script src="js/jquery-1.8.3.min.js"></script>
<script>
$(window).scroll(function(){
alert("Why are you alerting twice?");
});
</script>
或
window.onscroll = please_scroll;
function please_scroll() {
alert("Why are you alerting twice?");
}
我什至尝试过使用 $.debounce。
如果有任何用处,我将解释我正在尝试做的事情: 当用户向上或向下滚动滚轮时,页面将动画滚动到下一个全宽内容 div。我的代码可以在我的菜单上成功执行此操作,但我也希望它在用户滚动时发生,本质上是自动帮助他们滚动到我页面的每个部分。这是我目前用于滚动的功能:
function scrollTo(id){
// Scroll
$('html,body').animate({scrollTop: $("#"+id).offset().top - 110},'slow',function(){
animation_active = "false";
});
}
【问题讨论】:
-
首先,应该是:
window.onscroll = please_scroll;其次,你不应该使用 alert 来调试事件 -
那么鼠标滚轮和其他像苹果鼠标这样的隐藏在使用时可以更频繁地触发滚动事件。你必须为此使用超时
标签: javascript jquery scroll custom-scrolling