2012-04-23 15 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フェードアウトが実行されます。 そして、scrolltoがページの特定の幅にあるとき、正しいメニューが読み込まれなければなりません。しかし、それは間違ったものをいくつか読み込む。 – user1351865

答えて

0

OK。私は1つのことを見るが、それがすべてを修正するかどうかは分からない。

クリックイベントハンドラを以下のコードに変更してください。 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()の位置を変更しました。それ以外の場合はnavをリロードし、その後fadeOut navを呼び出します。 ここでフルコードを確認できます: http:///machimedia.nl/portfolio/index.html http://machimedia.nl/portfolio/js/javascript.js と助けてくれてありがとう;) – user1351865

関連する問題