0

私は似たような質問をたくさん見つけましたが、残念ながら私の問題を本当に解決するものはありません...

ナビゲーションリストがあります

<div class="nav-container">
     <ul>
          <li><a href="index.php">Home</a></li>
          <li><a href="contact.php">Contact</a></li>
     </ul>
</div>

クリックしたときにアンカータグ(「li」ではなく)にクラスを与えたいです。これまでのところ、私は持っています:

$(".nav-container li a").click(function(){
    $('.nav-container li a').removeClass('nav-active');
    $(this).addClass('nav-active');
})

一瞬クラスを追加してから消えるようです。

「return false;」を使用して、クラスを適用することができました。最後に、実際のリンクが一緒に機能しなくなります。

私は、一方が他方をキャンセルしていると推測しており、それを停止する方法が必要なだけです...どうやってそれを行うのかよくわかりません(申し訳ありません-jQueryの初心者)

私の問題を整理できる人に事前に感謝します:)

4

1 に答える 1

1

この例では、ブラウザは index.php または contact.php をリロードしているため、サーバーにクラス ロジックを配置する必要がある場合があります。

ページがリロードされており、この新しいページは変更をトリガーした古いページ イベントを認識していないため、クラスが表示されなくなります。

これを Javascript だけで解決するには、次のいずれかを行う必要があります。

  • クリック イベントで Cookie をドロップし、ページの読み込み時にそれを読み戻して、新しいページにクラスを再適用する、または
  • 各ページのコンテンツを非同期にロードする

ただし、現在 contact.php と index.php を 2 つの独立したページとして使用しているため、各ページのマークアップにクラスをハード コードするだけの方が簡単な場合があります。

于 2013-01-07T15:16:59.560 に答える