Domanda

Non importa quale metodo uso per rilevare lo scorrimento sulla pagina L'evento viene attivato due volte.Si prega di consultare il codice per i diversi metodi che ho provato.

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

o

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

o

window.onscroll = please_scroll;

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

Ho anche provato a usare $ .Debounce.

Nel caso sia di qualsiasi uso, spiegherò cosa sto cercando di fare: Quando l'utente scorre sulla ruota su o giù, la pagina animerà la rotolo fino al prossimo contenuto di larghezza completa.Ho il codice che sta facendo con successo questo onclick del mio menu, ma vorrei anche che accada come l'utente scorrere, essenzialmente auto li assistendo con lo scorrimento a ciascuna parte della mia pagina.Questa è la funzione che attualmente ho per lo scorrimento:

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

È stato utile?

Soluzione

Molti dispositivi possono scatenare eventi di scorrimento che sembrano accadere ancora una volta spesso.Utilizzare semplicemente un timeout per quello:

var timeout;

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

Puoi giocare con il valore 50, raccomando qualcosa tra 50 e 150.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top