2013-04-12 2 views
0

내 홈페이지에 ID가있는 메뉴가 있습니다.이 메뉴를 클릭하면 해당 div로 슬라이드되고 부드럽게 작동합니다.URL에서 ID로 천천히 이동하십시오.

하지만 내 홈페이지에 있지 않을 때 항목을 클릭하면 홈페이지로 이동 한 다음 섹션으로 이동할 수 있기를 원합니다. 이 우수한 작동

$('#mainMenu a').click(function(e){ 
    e.preventDefault(); 
    var div = $(this).attr('href'); 
    if('<?=get_site_url()?>/' == '<?=get_permalink()?>') 
    { 
     $('html, body').animate({scrollTop:$(div).position().top}, 'slow'); 
    } 
    else 
    { 
     window.location.href = '<?=get_site_url()?>/'+div; 
    } 
}); 

, 다음 부분에 작동하지만 나는 그것이 ID에 미끄러 얻을 수 : 여기

내가 지금 사용하고 코드입니다.

if (window.location.hash != "") { 
    e.preventDefault(); 
    $('html, body').animate({scrollTop:$(window.location.hash).position().top}, 'slow'); 
} 

브라우저가 섹션으로 바로 이동하지 못하도록 방지 할 수있는 방법이 있습니까?

+0

http://stackoverflow.com/questions/3503559/prevent-default-hash-behavior-on-page - – thefrontender

답변

0

이 마법처럼 작동합니다

내가 로컬 스토리지와이 설정된 경우 내가 확인 페이지 내 머리에 저장하는 대신 내 URL의 해시를 넣는
$('#mainMenu a').click(function(e){ 
    e.preventDefault(); 
    var div = $(this).attr('href'); 
    if('<?=get_site_url()?>/' == '<?=get_permalink()?>') 
    { 
     $('html, body').animate({scrollTop:$(div).position().top}, 'slow'); 
    } 
    else 
    { 
     localStorage.setItem("hash", div); 
     window.location.href = '<?=get_site_url()?>/'; 
    } 
}); 

if (localStorage.getItem("hash")!=null) { 
    $('html, body').animate({scrollTop:$(localStorage.getItem("hash")).position().top}, 'slow'); 
    localStorage.removeItem("hash"); 
} 

. 단 몇 분 질문을 게시 한 후이 솔루션을 설립

, 나를 :) 도움이 사람 덕분에

1

시도는, 시작에서 오른쪽으로 스크롤 아래로 굴립니다 :

또한
if (window.location.hash != "") { 
    $('html, body').scrollTop(0).animate({scrollTop:$(window.location.hash).position().top}, 'slow'); 
} 

, e.preventDefault을 (제거), 당신은 e 아니고 event를라는 이름의 변수를 정의하지 않을 때문이다.

+0

답변 주셔서 감사합니다, 전자는 내 document.ready (함수 (전자) {... 이 작품은하지만, 정말 깜박하지 부드럽고, 나는 다른 방법을 발견 주위에, 내 솔루션을 게시 할게 분) 어쨌든 고마워요 !! –

관련 문제