2016-08-01 4 views
0

So habe ich ein paar divs mit scrollbars. Offensichtlich, wenn es zum Boden dieser divs kommt, beginnt der Rest des Körpers zu scrollen. Nicht ideal.Wie man "window.scroll()" annulliert

Die "Position: fixiert;" trick on body funktioniert aufgrund des Layouts anderer divs nicht korrekt, daher habe ich eine kleine Lösung zusammengestellt, die die Position des Fensters scroll auf die aktuelle scroll setzt, wenn man den Mauszeiger über eines der divs hält. Hier ist der Code:

$(".scrollLock").hover(function() {  
    var scrollX = window.scrollX, scrollY = window.scrollY; 
window.onscroll = function(e){ 
    scroll(scrollX,scrollY) 
} 
}, function() { 
    var scrollX = window.scrollX, scrollY = window.scrollY; 
window.onscroll = function(e){ 
    scroll() 
} 
}); 

Offensichtlich ist diese zweite scroll() nicht korrekt. Während es funktioniert, füllt es die Konsole mit Fehlern, da es zwei Argumente erwartet. Wenn ich es jedoch entferne, bleibt die Scroll-Position auch dann gesperrt, wenn ich die scrollLock Div. Gibt es eine korrektere Methode, dies zu tun?

+1

Ich benutze 'margin-top' und berechne es aus' $ (window) .scrollTop() '. Funktioniert gut. Und handle '$ (window) .on ('scroll', function ...)' –

+0

Idealerweise: ändere keine Standardfunktion, erwartete Browserfunktionalität – jeremy

+0

Das scrollLock-Element ist ein bisschen wie die Freunde-Leiste auf der ganz rechten Seite von Facebook , die sich gleich verhält: ^) – MyNameWouldGoHere

Antwort

1

Versuchen Sie e.preventDefault().

Dies funktioniert möglicherweise nicht für das Scrollen.

+0

Oh hey, das funktioniert, danke :) – MyNameWouldGoHere