2017-02-25 1 views
2

Ich habe dieses Stück Skript, in dem ich geschafft habe, dass das Mausrad-Ereignis die Seite horizontal statt vertikal verschieben. Aber ich wollte ihm auch etwas Schwung verleihen. Ich habe die "After" -Funktion erstellt, aber die .scrollLeft für Körper wird nicht ausgeführt.Warum funktioniert .scrollLeft nicht in einer Timeout-Funktion?

var rate = 150; 

$(function() { 
    $("body").mousewheel(function (event, delta) { 
     function after() { 
      $("body").scrollLeft -= (delta * 1000); 
      console.log(delta); 
      event.preventDefault(); 
     }; 

     this.scrollLeft -= (delta * rate); 
     event.preventDefault(); 

     setTimeout(function() { 
      after(delta, event) 
     }, 3000); 
    }); 
}); 

So wie ich es sehe, nach 3 Sekunden soll der Körper mit (delta * 1000) Geschwindigkeit bewegen, aber es funktioniert nicht aus irgendeinem Grunde.

+0

Ihre ‚nach‘ Funktion keine Argumente übernimmt? – pooyan

+0

es ist, das 'console.log' in der After-Funktion wurde speziell gemacht, um zu sehen, ob es die Parameter bekommt. Die erste Iteration des Skripts war in diesem Sinne nicht korrekt (daher der Edit) –

Antwort

0

ich diese Hoffnung funktionieren würde (nicht sicher)

var rate = 150; 

$(function() { 
$("body").mousewheel(function (event, delta) { 
    function after(event, delta) { 
     $("body").scrollLeft -= (delta * 1000); 
     console.log(delta); 
     event.preventDefault(); 
    }; 

    this.scrollLeft -= (delta * rate); 
    event.preventDefault(); 

    setTimeout(function() { 
     after(event, delta) 
    }.bind(null,event, delta), 3000); 
}); 
}); 
+0

Leider hat es nicht. Das 'console.log' in der 2. Funktion zeigt immer noch das Delta an, jedoch ohne Erfolg. Ich ausgeschlossen Delta nicht in der zweiten Funktion, so dass ich alle Probleme habe :( –

Verwandte Themen