2013-04-09 8 views
11

Der Versuch, die Seite zu einem Anker zu scrollen und ich bekomme diesen Fehler.Kann die Eigenschaft 'top' von undefined nicht lesen

Kann nicht Eigentum 'top' undefinierter

lesen Im Moment habe ich meine JS wie die folgende haben ...

//scroll to section process page 
function scrollToAnchor(aid){ 
    var aTag = $("div[name='"+ aid +"']"); 
    $('html,body').animate({scrollTop: aTag.offset().top},'slow'); 
} 

$("li.menu-item-141 a").click(function() { 
    scrollToAnchor('#philosophy-page'); 
}); 

Hier mein HTML ist ...

<div class="container"> 
<div name="philosophy-page" id="philosophy-page"> 
    <div class="philosophy-heading"> 
     <h1>Philosophy</h1> 
    </div><!-- /.philosophy-heading --> 
</div><!-- /#philosophy-page --> 
</div><!-- /.container --> 

Beliebig Hilfe wäre großartig!

Vielen Dank!

Antwort

11

ersetzen

scrollToAnchor('#philosophy-page'); 

von

scrollToAnchor('philosophy-page'); 

Denken Sie daran, die name verwenden Sie das a Element zu finden:

var aTag = $("div[name='"+ aid +"']"); 

jQuery kann kein Element #philosophy-page

+0

Ja, das hat funktioniert! Vielen Dank!!!! Ich werde als richtige Antwort markieren ... Sie können eine Antwort in 11 Minuten akzeptieren, sagt StackOverflow derzeit – bryanlewis

1

Pass-ID ohne # als Name nicht # drin.

ändern

scrollToAnchor('#philosophy-page'); 

Um

scrollToAnchor('philosophy-page'); 
2
$(function() { 
    $('a[href*="#"]:not([href="#"])').click(function() { 
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
     if (target.length) { 
     $('html, body').animate({ 
      scrollTop: target.offset().top 
     }, 1000); 
     return false; 
     } 
    } 
    }); 
}); 

Bestes scroll ich gefunden habe dem Namen finden. Found it on CSS Tricks: https://css-tricks.com/snippets/jquery/smooth-scrolling/

Verwandte Themen