Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.scroll事件触发两次_Javascript_Jquery_Scroll_Custom Scrolling - Fatal编程技术网

Javascript window.scroll事件触发两次

Javascript window.scroll事件触发两次,javascript,jquery,scroll,custom-scrolling,Javascript,Jquery,Scroll,Custom Scrolling,无论我使用什么方法来检测页面上的滚动,事件都会触发两次。请参阅我尝试过的不同方法的代码 <body onmousewheel="alert('Why are you alerting twice?')"> 我甚至尝试过使用$.debounce 如果有任何用处,我将解释我试图做什么: 当用户向上或向下滚动滚轮时,页面将设置滚动到下一个全宽内容div的动画。我有代码可以成功地在单击菜单时执行此操作,但我也希望它在用户滚动时发生,基本上自动帮助他们滚动到页面的每个部分。这是我目前用于滚动

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

<body onmousewheel="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之间的值。

首先,应该是:
window.onscroll=please\u scrollfunction 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);
});