2014-02-23 2 views
0

내 스크롤 막대를 부드럽게 스크롤하여 내 홈페이지의 앵커로 이동하려고합니다. 나는이 jQuery 코드 사용jQuery 부드러운 스크롤이 처음 앵커에서 오류를 반환합니다.

$(document).ready(function(){ 
    $('a').click(function(){ 
     $('html, body').animate({ 
      scrollTop: $($.attr(this, 'href')).offset().top 
     }, 1000); 
      return false; 
    }); 
}); 

을 그리고 이것은 HTML 코드입니다 : 이것은 모든 앵커하지만 처음에 매우 잘 작동

<div id="menu"> 
     <div id="menu-contain"> 
      <ul> 
       <li><a class="home" href="#">Home</a></li> 
       <li><a class="about" href="#about">About</a></li> 
       <li><a class="projects" href="#projects">Projects</a></li> 
       <li><a class="contact" href="#contact">Contact</a></li> 
      </ul> 
     </div> 
    </div> 

.

Cannot read property 'top' of undefined 

내가이 오류에 스레드를 많이 발견하지만 난 나를 위해 작동 해결책을 찾지 못했습니다 : 나는 콘솔에서보고있는 경우 내가 처음 링크를 클릭하면 오류가있다.

제안에 감사드립니다 :) 대상 요소의 존재

답변

1

확인을 사용하기 전에 :

$('a').click(function(){ 
    var $target = $($.attr(this, 'href')); 

    if (! $target.length) return; 

    $('html, body').animate({ 
     scrollTop: $($.attr(this, 'href')).offset().top 
    }, 1000); 

    return false; 
}); 

당신은 또한 당신의 선택을 캐시한다. See this thread for more details.

+0

답변 해 주셔서 감사합니다. 콘솔의 오류는 이제 사라졌지만 첫 번째 앵커에는 부드러운 스크롤이 여전히 작동하지 않습니다. 왜 그런지 알아? 그리고 내 셀렉터 캐시 링크에 감사드립니다. 나는 그것을 볼 것이다. – Tyler

관련 문제