2012-05-11 11 views
7

Ich habe versucht, glattes Scrollen in einen Index von Informationen zu implementieren. Ich habe dieses jsFiddle http://jsfiddle.net/9SDLw/ angeschaut und ich kann es nicht zur Arbeit bringen. Ist es wichtig, wo der Code in das HTML-Dokument eingefügt wird?jQuery Smooth Scrolling

Hier ist mein Code:

JS (in Anfang des Dokuments):

<script type="text/javascript"> 
$('a').click(function(){ 
    $('html, body').animate({ 
     scrollTop: $($(this).attr('href')).offset().top 
    }, 500); 
    return false; 
});​ 
</script> 

Markup:

Link-

<a href = "#G" rel = "" id="G" class="anchorLink">G</a><br /> 

Anchor

<a name = "G" id="G"><span class = "letters">G</span></a><br /> 

Was fehlt mir hier?

+0

Sie müssen es in einem document.ready setzen() –

Antwort

10

jsBin demo

<ul id="links"> 
    <li><a href="#a">Go to a</a></li> 
    <li><a href="#b">Go to b</a></li> 
</ul> 

und als irgendwo in Ihrem Dokument ...

<h2 id="a">Article "a"</h2> 
Lorem...... 
<h2 id="b">Article "b"</h2> 
Lorem...... 

jQ:

$('#links a').click(function(e){ 
    e.preventDefault(); 
    var targetId = $(this).attr("href"); 
    var top = $(targetId).offset().top; 
    $('html, body').stop().animate({scrollTop: top }, 1500); 
}); 

, was die oben tut, ist die abgerufene Anker verwenden href und benutze es als jQuery ' s # (ID) Selektor. Gefunden, dass ID-Element, es ist top offset und schließlich die Seite animieren.

+0

wenn ich diese Methode verwenden, bin ich werde um Tonnen von IDs zu bekommen? Ich wollte das reibungslose Scrollen zu einer Liste von Testtypen in alphabetischer Reihenfolge implementieren. Wie könnte ich dies mit dieser Methode tun? – Ben

+0

@Ben du meinst du willst haben: 'a_link, b_link ...' und gleichzeitig 'a_content, b_content' etc, oder? –

+0

Etwas. Im Grunde habe ich nur einen Buchstaben "A" mit etwas CSS. Dann habe ich auf der Seitenleiste ein A, das dem Anker des ersten A entsprechen würde. Und so weiter und so weiter durch das Alphabet. Also würde das Hinzufügen von IDs ein Schmerz sein, denke ich. – Ben

-1

Sie müssen wickeln den gesamten Code mit

$(document).ready(function(){ ... }); 

oder

nur
$(function(){ ... });