3

リンクがクリックされたときにコンテンツを動的に取得するために、jQuery を使用して Web サイトをセットアップする新しい方法を試しています。jQueryコードは次のとおりです。

$(document).ready(function() {

 var content_loader = $('#content-loader');

 $('#nav ul li a').click(function () {
  $(this).closest('ul').find('li.active').removeClass('active');
  $(this).parent().addClass('active');
  content_loader.load('content/' + $(this).attr('data-name') + '.html'); 
  });

 content_loader.load('content/home.html');

});

リンクがクリックされるたびに最初からやり直すのではなく、常に再生したい曲がサイトのバックグラウンドにあるので、私はこのようにしています。

私が抱えている2つの問題を除いて、全体はかなりうまく機能します。

  1. お問い合わせリンクをクリックしたとしましょう。URL の末尾に #contactus が表示されるようになりました。その後、ページを更新すると、ホームページのコンテンツが再び表示されます。
  2. 誰かを私のお問い合わせページにリンクしようとすると、同じ問題が発生します。

URLの # 記号の後に来るものをjQueryがどうにかして見つけられるかどうか疑問に思っていました。その場合、jQuery コードの最後の行を変更して、常にホーム データの代わりにそれをロードすることができます。

4

2 に答える 2

3

window.location.hashハッシュの後の値が含まれます (存在する場合)。 (これは、ブラウザのアドレスバーの現在のページなど、現在の URL にハッシュがある場合です。)

それ以外の場合、href からリンクを読んでいる場合はindexOf('#')、少し解析する必要があります。

于 2010-07-01T07:44:05.020 に答える
2

あなたの答えの人に感謝します。これは私が今それをした方法です:

$(document).ready(function() {

    var content_loader = $('#content-loader');

    $('#nav ul li a').click(function () {
        $(this).closest('ul').find('li.active').removeClass('active');
        $(this).parent().addClass('active');
        content_loader.load('content/' + $(this).attr('href').slice(1) + '.html');  
        });

    var initial = 'home';
    if (window.location.hash) {
        initial = window.location.hash.slice(1);
        }

    $('#nav').find('a[href="#' + initial + '"]').parent('li').addClass('active');
    content_loader.load('content/' + initial + '.html');

    });
于 2010-07-01T08:14:11.013 に答える