2012-04-23 9 views
1

나는 현재 내 포트폴리오에서 작업하고 있으며 방문자가 페이지를 탐색 할 수 있도록 ScrollTo jQuery 플러그인을 사용하고 있습니다. 모든 작업이 가능하지만 이전 페이지와 같이 하나의 페이지에서 다른 페이지로 스크롤 할 수있는 링크를 구현하고 싶었습니다. 모든 페이지에서 다른 링크를 사용해야합니다.내 페이지 탐색이 ScrollTo()가 올바른 페이지에없는 이유는 무엇입니까? (jQuery)

나는 또한 작동하지만 어떻게 든 잘못된 페이지에 잘못된 링크를 보여줍니다. 예 : 페이지 2에는 페이지 1의 링크가 있고 페이지 3에는 페이지 2의 링크가 있습니다. 그리고 해당 링크를 다시 클릭하면 링크가 올바른 링크로 변경됩니다.

당신은 여기에서 확인할 수 있습니다 : http://machimedia.nl/portfolio/

이 내가 사용하는 기능입니다 :

function reloadPageNav(){ 
var section1Top = 0; 
// The top of each section is offset by half the distance to the previous section. 
var section2Top = $('#portfolio').offset().left - (($('#aboutme').offset().left - $('#portfolio').offset().left)/2); 
var section3Top = $('#aboutme').offset().left - (($(document).width() - $('#aboutme').offset().left)/2);; 

if($(document).scrollTop() >= section1Top && $(document).scrollTop() < section2Top){ 
    $('nav#homenav').delay(1000).fadeIn(800); 
} else if ($(document).scrollTop() >= section2Top && $(document).scrollTop() < section3Top){ 
    $('nav#portfolionav').delay(1000).fadeIn(800); 
} else if ($(document).scrollTop() >= section3Top){ 
    $('nav#aboutmenav').delay(1000).fadeIn(800); 
} } 

가 그리고 a.link을 클릭하면 링크가 pagenav를 클릭 할 때마다 있도록이라고 다시 그려진다. 나는 이것을 위해 다음과 같은 함수를 사용했다.

$('a.link').click(function() { 
    $('#wrapper').scrollTo($(this).attr('href'), 1500); 
    //setPosition($(this).attr('href'), '#cloud1', '0px', '400px', '800px', '1200px') 
    //setPosition($(this).attr('href'), '#cloud2', '0px', '800px', '1600px', '2400px') 
    $('a.link').removeClass('selected'); 
    $(this).addClass('selected'); 

    $('nav.next').fadeOut(500); 
    $('nav.prev').fadeOut(500); 
    reloadPageNav(); 
    homeNav(); 
    return false; 

}); 

여러분 중 누구라도 나를 도와 주시면 감사하겠습니다. 미리 도움을 청하십시오.)

+0

여기서 nav.next 및 nav.prev의 href를 재설정 하시겠습니까? 나는 그것을 발견 할 수 없다? 그것은 어딘가에서 일어날 필요가 없을까요? 나는 그걸 잘못보고 있니? – Trent

+0

a.link를 클릭하면 nav.prev 및 nav.next fadeout이 표시됩니다. 그리고 scrollto가 페이지의 특정 너비에있을 때 올바른 메뉴가로드되어야합니다. 그러나 그것은 잘못된 것을 하나씩로드합니다. – user1351865

답변

0

확인. 한 가지만 보지만 모든 것이 고쳐질 지 확신 할 수 없습니다.

클릭 이벤트 처리기를 아래의 코드로 변경하십시오. reloadPageNav 함수를 설정하는 방법은 이미 새 위치로 스크롤 한 것으로 가정합니다. 하지만 scrollTo는 비동기로 실행됩니다 ... 그래서 아마 그 시간까지 완료되지 않을 것입니다. 아래 코드에서는 reloadPageNav를 scrollTo ... 콜백 함수로 이동하므로 스크롤이 완료 될 때까지 호출되지 않습니다.

$('a.link').click(function() { 
    $('#wrapper').scrollTo($(this).attr('href'), 1500, {onAfter: function(){reloadPageNav();}}); 
    $('a.link').removeClass('selected'); 
    $(this).addClass('selected'); 

    $('nav.next').fadeOut(500); 
    $('nav.prev').fadeOut(500); 
    homeNav(); 
    return false; 

}); 
+0

답변 해 주셔서 감사합니다. 나는 일하지 못했지만 그것을 개선하는 것도 좋은 일이다. 이제는 잘못된 페이지에 메뉴가 있습니다. reloadPageNav 함수와 관련이 있어야합니다. – user1351865

+0

사이트에서이 변경을 수행 했습니까? 나는 지금 당장 문을 닫았지만, 나는 오늘 밤에 그걸로 어지럽 힐 것이다. – Trent

+0

예. 하지만 nav.next와 nav.pref fadeOut() 함수의 위치를 ​​바꿨습니다. 그렇지 않으면 탐색을 다시로드하고 그 후 fadeOut 탐색을 수행했기 때문입니다. 여기에서 전체 코드를 확인할 수 있습니다. http :// /machimedia.nl/portfolio/index.html http://machimedia.nl/portfolio/js/javascript.js 그리고 도와 주셔서 감사합니다;) – user1351865