2013-04-09 18 views
11

Próba zmuszenia strony do przewinięcia i pojawia się ten błąd.Nie można odczytać właściwości "góry" nieokreślonej.

nie można odczytać własności 'top' undefined

Teraz mam JS jak poniżej ...

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

Tu jest mój 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 --> 

Any pomoc byłaby świetna!

Dziękujemy!

Odpowiedz

11

zastąpić

scrollToAnchor('#philosophy-page'); 

przez

scrollToAnchor('philosophy-page'); 

Pamiętaj użyć name aby znaleźć element a:

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

jQuery nie może znaleźć element o nazwie #philosophy-page

+0

Tak, zadziałało! Dziękuję Ci!!!! Zaznaczę jako właściwą odpowiedź ... Możesz zaakceptować odpowiedź w 11 minut, o czym mówi obecnie StackOverflow – bryanlewis

1

Przekaż identyfikator bez #, ponieważ nazwa nie zawiera w sobie #.

Zmień

scrollToAnchor('#philosophy-page'); 

Aby

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

Najlepszy przewijania, aby znalazłem. Znaleziono na sztuczkach CSS: https://css-tricks.com/snippets/jquery/smooth-scrolling/

Powiązane problemy