2013-04-09 5 views
11

Попытка заставить страницу прокручиваться до привязки, и я получаю эту ошибку.Невозможно прочитать свойство 'top' of undefined

Не удается прочитать свойство 'сверху' неопределенной

Прямо сейчас у меня есть JS, как следующее ...

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

Вот мой 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 --> 

Любой помощь будет здорово!

Спасибо!

ответ

11

заменить

scrollToAnchor('#philosophy-page'); 

по

scrollToAnchor('philosophy-page'); 

Помните, что вы использовать name найти a элемент:

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

Jquery не может найти элемент с именем #philosophy-page

+0

Да, это сработало! Спасибо!!!! Я буду отмечать как правильный ответ ... Вы можете принять ответ за 11 минут. StackOverflow говорит в настоящее время – bryanlewis

1

Pass id без # как имя не # в нем.

Изменить

scrollToAnchor('#philosophy-page'); 

Для

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

Лучшие прокрутки я нашел. Нашел это на CSS-трюках: https://css-tricks.com/snippets/jquery/smooth-scrolling/

Смежные вопросы