2011-01-03 9 views
1

Ich versuche, eine Funktion zu erstellen, wo der Benutzer ein Menü sieht, das 5 Nummern hat, 1 - 5. 1 = am langsamsten und 5 = am schnellsten, wenn jemand Wenn Sie auf eine dieser Zahlen klicken, beginnt die Seite sich selbst zu scrollen, sodass die Person nicht mehr durch die Seite blättern muss. Das Problem, das ich habe, ist, dass ich der Person erlauben möchte, noch Zugang zu ihrem Mausrad zu haben, aber wenn ich das Mausrad verwende, während die Seite animiert, reißt es die Seite herunter und dann reißt es die Seite zurück zu wo es war und es fährt fort, zu animieren, erlaubt mir aber nicht, nach unten zu scrollen oder zu sichern und dann von der neuen Position zu animieren, zu der ich mit meinem Mausrad gescrollt habe. Im Moment habe ich es so, wenn ich während des Scrollens auf die Seite klicke, hört es auf, aber ich nehme das im endgültigen Skript nicht auf, keine Hilfe? VIELEN DANK!jquery: auto scroll Seite, aber für mousewheel, noch Scrollen

$('html,body').animate({scrollTop: $(target).offset().top},430000) 

$('html,body').click(function(){ 
    $('html,body').stop() 
}) 

Antwort

1

Ich habe versucht, diese in die durch Antippen scroll Ereignis zu erreichen, aber leider wurde dieses Ereignis wiederholt aufgerufen, wenn die Animation ausgeführt wurde (sollte es besser wissen).

Ich landete ein jQuery Mousewheel Plugin verwenden, die empfindlicher ist Ereignisse blättern und zwischen scroll und mousewheel unterscheiden kann, so dass man so etwas schreiben kann:

$(window).bind("mousewheel", function() { 
    $("html, body").stop(); 
}); 

http://jsfiddle.net/Yuw9R/1/

Bildlauf nach oben oder unten mit dem Rad sollte das automatisierte Scrollen stoppen. Möglicherweise möchten Sie Code hinzufügen, um die Aufwärts-/Abwärtspfeile wieder zu aktivieren. Hier ist Code, den Sie hinzufügen könnte, das zu tun:

$(window).bind("keydown", function(event) { 
    var keyCode = event.which; 
    /* up, down, left, right, or page up or page down */ 
    if (keyCode === 33 || keyCode == 34 || (keyCode >= 37 && keyCode <= 40)) { 
     $("html, body").stop(); 
    } 
}); 

Wenn Sie nicht möchten, dass ein Plugin verwenden, check out this related thread.

Verwandte Themen