Question

Quelle que soit la méthode que j'utilise pour détecter le défilement de la page L'événement est déclenché deux fois.S'il vous plaît voir le code pour les différentes méthodes que j'ai essayées.

<body onmousewheel="alert('Why are you alerting twice?')">

ou

<script src="js/jquery-1.8.3.min.js"></script>
<script>
$(window).scroll(function(){
    alert("Why are you alerting twice?");
});
</script>

ou

window.onscroll = please_scroll;

function please_scroll() {
      alert("Why are you alerting twice?");
    }

J'ai même essayé d'utiliser $ .debounce.

Si c'est de toute utilisation, je vais expliquer ce que j'essaie de faire: Lorsque l'utilisateur fait défiler la roue vers le haut ou le bas, la page animera le défilement au contenu de la largeur complète suivante DIV.J'ai du code qui réussit à ce que l'onCliquez sur mon menu, mais j'aimerais également que cela se produise lorsque l'utilisateur fait défiler l'utilisateur, essentiellement automatiquement les assistant avec défilement dans chaque partie de ma page.C'est la fonction que j'ai actuellement pour faire défiler:

function scrollTo(id){
  // Scroll
  $('html,body').animate({scrollTop: $("#"+id).offset().top - 110},'slow',function(){
    animation_active = "false";
  });
}

Était-ce utile?

La solution

De nombreux appareils peuvent déclencher des événements de défilement qui semblent se produire une fois de plus.Utilisez simplement un délai d'attente pour cela:

var timeout;

$(window).scroll(function() {
    clearTimeout(timeout);  
    timeout = setTimeout(function() {
        // do your stuff
    }, 50);
});

Vous pouvez jouer avec la valeur 50, je recommande quelque chose entre 50 et 150.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top