2016-06-22 16 views
1

Ich versuche, zu einem div innerhalb einer Seite zu verknüpfen, und ich frage window.scrollTo(0, $(this.hash));, um zu dem Ort zu gehen, wo das div befindet.Warum scrollt scrollY nicht für href zu meiner gewünschten Position?

Wenn ich es console.log, ist es korrekt, aber wenn ich es in window.scrollTo verwende geht es an den Anfang der Seite. Warum sollte es nicht an den richtigen Ort gehen?

$(document).ready(function() { 
    $('a').on('click', function(e){ 
     e.preventDefault(); 
     // console.log(this.hash); 
     console.log(e.currentTarget.href.indexOf('#')); 
     console.log($(this.hash)); 
     console.log(window.pageYOffset); 
     console.log(window.location.hash); 
     if(e.currentTarget.href.indexOf('#') != -1){ 
      // console.log(window.location); 
      window.scrollTo(0, $(this.hash)); //the scrollY should be the hash location 
      console.log($(this.hash)); 
     } 
     return false; 
    }); 
}); 
+1

Was sehen Sie in 'console.log ($ (this.hash));'? –

+3

Die Methode 'window.scrollTo()' akzeptiert kein jq-Objekt als Parameter. Vielleicht verwirrend mit diesem Plugin https://github.com/flesler/jquery.scrollTo –

+0

Da Sie jquery verwenden, warum verwenden Sie nicht jquery für scroll es auch? So einfach wie '$ ('html, body'). animate ({scrollTop: 100}, 200);' –

Antwort

1

Ich denke, Sie haben missverstanden, was window.scrollTo tut. Sie finden die Dokumentation hier: http://www.w3schools.com/jsref/met_win_scrollto.asp

Sie akzeptiert grundsätzlich ein xPos und yPos als Argumente. Daher könnten Sie etwas wie window.scrollTo(0, $(this.hash).offset().top) tun, oder Sie könnten eine $(window).animate({scrollTop: $(this.hash).offset().top})

machen Lassen Sie mich wissen, wenn das hilft!

+0

du meinst $ (this) .offset() statt $ (this.hash) .offset() ? – derloopkat

+0

Nr. '$ (This) .offset()' gibt Ihnen den Offset der Schaltfläche, nicht das Element, das Sie blättern möchten. – Mike

+0

Danke A. Wolff Ich habe das verpasst – Mike