2013-04-09 32 views
11

Cercando di far scorrere la pagina verso un'ancora e sto ottenendo questo errore.Impossibile leggere la proprietà 'top' di undefined

non può leggere proprietà 'top' undefined

In questo momento ho i miei JS come la seguente ...

//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'); 
}); 

Ecco il mio HTML ...

<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 --> 

Qualsiasi l'aiuto sarebbe fantastico!

Grazie!

risposta

11

sostituire

scrollToAnchor('#philosophy-page'); 

da

scrollToAnchor('philosophy-page'); 

Ricordati di utilizzare il name di trovare l'elemento a:

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

jQuery non riesce a trovare un elemento chiamato #philosophy-page

+0

Sì, ha funzionato! Grazie!!!! Contrassegnerò come risposta giusta ... Puoi accettare una risposta in 11 minuti StackOverflow dice attualmente – bryanlewis

1

ID di passaggio senza # come nome non # in esso.

Change

scrollToAnchor('#philosophy-page'); 

Per

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; 
     } 
    } 
    }); 
}); 

migliore scorrimento per ho trovato. Trovato su CSS Tricks: https://css-tricks.com/snippets/jquery/smooth-scrolling/

Problemi correlati