2012-10-27 11 views
15

Wenn ich $("body").animate({scrollTop: someValue}); anrufen möchte ich auch $(window).scroll(function() { }); aufgerufen werden. Wie kann ich das erreichen?

Ich habe mit $(window).trigger("scroll") und $(window).triggerHandler("scroll") ohne Erfolg versucht.

The code

EDIT: Problem gelöst. Es gab einen if in meinem $(window).scroll(function() { });, der das Problem verursachte.

+0

was ist animationType? Und was, wenn Sie animationType in Anführungszeichen wie "easeIn" verwenden? – 2619

+0

@ al0neevenings Das ist nicht das Problem. Die Body-Sektion scrollt, aber das '$ (window) .scrollU();' wird nicht aufgerufen. – Sawny

+1

können Sie auch posten, was die an 'scroll' gebundene Methode macht? –

Antwort

7

Wenden Sie es sowohl auf body und html, da es nicht im Einklang steht .. (verwendet zum Beispiel FF die html zum Scrollen, während Chrom die body verwendet)

$("html, body").animate({scrollTop: someValue}); 

Demo aufhttp://jsfiddle.net/vzyVh/

+0

1) Löst mein Problem nicht. 2) Dann wird der Callback zweimal aufgerufen. – Sawny

+0

@sawny, nur wenn Sie Ihr CSS so konfiguriert haben, dass sowohl 'html' als auch' body' scrollen können. Standardmäßig nur eine dieser Schriftrollen. Zusätzlich: die 'scroll' Methode, die auf' window' angewendet wird, wird nicht nur einmal aufgerufen. Es wird für jeden Scroll-Schritt aufgerufen. –

+1

Diese Antwort wurde mit http://stackoverflow.com/a/12792245/1504300 gemischt, um nach unten scrollen zu können. – reallynice

1

Sie unter Code versuchen können - hier i nach oben meine div-Tag verschiebe die id "ein" hat.

$('html,body').animate({ scrollTop: $('#one').offset().top }, 'slow');