window.scroll事件触发两次
-
21-12-2019 - |
题
无论我用于检测页面上的滚动是什么方法,事件被触发两次。请查看我尝试过的不同方法的代码。
<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";
});
}
. 解决方案
许多设备可以触发滚动事件,似乎更频繁地发生一次。只需使用超时:
var timeout;
$(window).scroll(function() {
clearTimeout(timeout);
timeout = setTimeout(function() {
// do your stuff
}, 50);
});
.
您可以使用值50,我推荐50到150之间的东西。
不隶属于 StackOverflow