2013-08-10 2 views
0

앵커를 클릭했을 때 매끄러운 스크롤을 할 수는 있지만 먼저 앵커 링크가 id에 연결되어 있는지 확인하고 싶습니다. 해시가 있다면 스크롤을하지 마십시오.앵커가 ID에 연결되어 있는지 확인

처럼 : 클릭에

<a href="#">do not scroll</a> 

<a href="#anyID">Yes do the scroll</a> 

내 현재 코드 스크롤 단지 해시가 모든 앵커. 이 스크롤되지 않도록 고정 그냥

$('a[href^="#"]').click(function (e) { 
    e.preventDefault(); 
    var target = this.hash; 

    if (typeof($(target).offset()) != 'undefined') { 
     $('html, body').animate({ 
      scrollTop: $(target).offset().top - 60 
     }, 1000); 
    } 
}); 

답변

2

을 시도 내 코드를 수정하시기 바랍니다 해시를 선택하면 선택기가 다음과 같이 바뀔 수 있습니다.

$('a[href^="#"][href!="#"]') 

Exis 요소의 tence도 좋은 것입니다.

3

해시 경우

당신이 요소가 단지 포함하지 않는 각 앵커 존재하는지 확인하는 경우

$('a[href^="#"]').click(function (e) { 
    e.preventDefault(); 
    var target = $(this.href); 

    if (target.length && target.is(':visible')) { 
     $('html, body').animate({ 
      scrollTop: $(target).offset().top - 60 
     }, 1000); 
    } 
}); 
+0

있어 오류 오류 : 구문 오류, 인식 할 수없는 표현 : http://url.com/home#experiance – user007

+0

는 자바 스크립트의 구문 오류처럼 보이는 ... 당신이 줄 수 –

1
$('a').click(function(){ 
var href=$(this).attr('href'); 
if(href!="#"){ 
    $('html, body').animate({ 
    scrollTop: $(href).offset().top - 60 
    }, 1000); 
} 
}); 
+0

를 확인할 수 있습니다 당신은 shouldn ' 선택기를 변경하십시오. 이제 외부 페이지로 연결되는'a' 요소를 선택합니다. 그리고'$ ('http : // ....')'는 구문 에러를 던질 것입니다. –

+0

미안하지만 못 들었어. – Lab

+0

'$ ('a')'도 정교하게 ''과 같은 요소, 즉 외부면에 대한 링크를 선택합니다. 'if (href! = "#")'가 true가됩니다. 나중에'href' 값을 jQuery ('$ (href)')에 전달하고'href = "http://example.com"'부터 jQuery는 유효한 선택자가 아니기 때문에 오류를 던집니다. OP의 selector 인'$ ('a [href^= "#"]')'를 유지해야합니다. –

관련 문제