Вопрос

Независимо от того, какой метод я использую для обнаружения прокрутки на странице, событие запускается дважды.Пожалуйста, смотрите код для различных методов, которые я пробовал.

<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.У меня есть код, который успешно делает этот onClick моего меню, но я также хотел бы, чтобы он произошел, когда пользовательские прокрутки, по сути, автоматически помогая им прокручиваться в каждую часть моей страницы.Это функция, которую я в настоящее время имею для прокрутки:

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