无论我用于检测页面上的滚动是什么方法,事件被触发两次。请查看我尝试过的不同方法的代码。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top