2017-05-26 3 views
1

Ich habe eine einfache JavaScript-Funktion, die das Blättern der Seite erkennt.Update-Funktion auf Seite aktualisieren

Alles funktioniert.

Die einzige Auslassung ist, dass wenn die Seite aktualisiert wird, die Rolle nicht beibehalten wird, muss also wiederhergestellt werden.

Ich dachte, es könnte etwas so einfach sein, wie den direkten Anruf zu docScroll() in pub.init mit etwas wie $(window).on("load", docScroll()); in setBindings ersetzen, aber leider funktioniert das nicht.

Bietet jemand Rat?

var scroll = function() { 
    var pub = {}, timeout = null; 

    function reset() { 
     if (typeof (timeout)) 
      clearTimeout(timeout); 

     timeout = setTimeout(function() { 
      docScoll(); 
     }, 200); 
    } 

    function docScroll() { 
     $body = $("body"); 
     var headerHeight = $("#header").height(); 

     $(document).scroll(function() { 
      if ($(window).scrollTop() > headerHeight) { 
       $body.addClass("scrolling"); 
      } 
      else { 
       $body.removeClass("scrolling"); 
      } 
     }); 
    } 

    function setBindings() { 
     $(window).on("resize", reset); 
    } 

    pub.init = function() { 
     setBindings(); 
     docScroll(); 
    } 

    return pub; 
}(); 
+0

Wann rufst du init() an? –

+0

init heißt in document.Ready –

+0

warum ist das nicht ausreichend? –

Antwort

0

Der Scroll-Ereignishandler sollte einmal festgelegt werden. Also würde ich so etwas tun:

var scroll = function() { 
    var pub = {}; 

    function docScroll() { 
     var $body = $("body"); 
     var headerHeight = $("#header").height(); 

     if ($(window).scrollTop() > headerHeight) { 
      $body.addClass("scrolling"); 
     } 
     else { 
      $body.removeClass("scrolling"); 
     } 
    } 

    function setBindings() { 
     $(document).scroll(docScroll); 
    } 

    pub.init = function() { 
     setBindings(); 
     docScroll(); 
    } 

    return pub; 
}(); 
+0

getestet und funktioniert ohne die Komplikationen beim Speichern von Variablen. Ich habe das resize-Ereignis hinzugefügt und docScroll() zur Vollständigkeit aufgerufen. Die Kopfzeile ändert die Größe bei der Ausrichtung. Danke für die Unterstützung. –