0

Jqueryでシンプルなナビゲーションバーを作ろうとしています。ホバー時にテキストの色を変更し、テキストがクリックされたときにホバーの色を維持したい。本当に単純なことですが、hover: を使用して css でこれを問題なく実行し、次に JQuery でオンクリック関数を使用しました。問題は、ナビゲーション バーの項目の 1 つがクリックされるまで、すべてが正常に機能することです。ナビゲーション バーのアイテムをクリックすると、:hover が機能しなくなりますか? 私はcssで「大丈夫」ですが、jQueryは初めてです。これがばかげた質問ではないことを願っていますが、過去 2 時間、あらゆる種類の jQuery コードを使用してこれを修正しようとしました。コードが長くなり、1 つの問題を修正してから別の問題を作成します。JSFiddle を確認すると、クリックするまでロールオーバーが機能することがわかります。:hover がクリックされていない 2 つのリンクで動作し続けるようにしたい! ここにJSFiddleがあります

助けてくれてありがとう。

コードは次のとおりです。

<!DOCTYPE html>
<head>
    <title>Help!</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

    <style type="text/css">
      #wedding-tips, #general-tips, #travel-tips{ cursor: pointer;}
      #wedding-tips:hover, #general-tips:hover, #travel-tips:hover{color: #bc2021;}
    </style>

    <script>
      $(document).ready(function(){
      $("#wedding-tips-container, #travel-tips-container").hide();

      $("#general-tips").click(function(){
      $("#wedding-tips-container,#travel-tips-container").hide('slow');
      $("#general-tips-container").show('slow');
      $("#general-tips").css("color","#bc2021");
      $("#wedding-tips,#travel-tips").css("color","#000");
      });

      $("#wedding-tips").click(function(){
      $("#general-tips-container,#travel-tips-container").hide('slow');
      $("#wedding-tips-container").show('slow');
      $("#wedding-tips").css("color","#bc2021");
      $("#general-tips,#travel-tips").css("color","#000");
      });

      $("#travel-tips").click(function(){
      $("#general-tips-container,#wedding-tips-container").hide('slow');
      $("#travel-tips-container").show('slow');
      $("#travel-tips").css("color","#bc2021");
      $("#wedding-tips,#general-tips").css("color","#000");
      });     
      });
    </script>
</head>

<body>

 <div id="content-selector-div">
    <div id="general-tips">General Photography Tips</div>
    <div id="wedding-tips">Wedding Photography Tips</div>
    <div id="travel-tips">Travel Photography Tips</div>
 </div><br />

<div id="general-tips-container">
    <p>General Tips Here</p>
</div>

<div id="wedding-tips-container">
    <p>Wedding Tips Here</p>
</div>

<div id="travel-tips-container">
    <p>Travel Tips Here</p>
</div>

</body>
</html>
4

2 に答える 2

3

機能しない理由は非常に単純です。要素に「手動で」色を設定すると、ホバー色よりも「優先度」が高くなり、常に存在します。

$("#wedding-tips,#travel-tips").css("color","#000"); --> problem

独自のクラスを作成し(「現在」と呼びましょう)、ユーザーがナビゲーションをクリックしたときに追加/削除します-> http://jsfiddle.net/dmJ8p/

于 2014-02-22T19:07:23.330 に答える
1

jquery addClass および removeClass 関数を使用する

$(document).ready(function () {
 $("#wedding-tips-container, #travel-tips-container").hide();

 $("#general-tips").click(function () {
    $("#wedding-tips-container,#travel-tips-container").hide('slow');
    $("#general-tips-container").show('slow');
    $("#general-tips").addClass("active");
    $("#wedding-tips,#travel-tips").removeClass("active");
 });

  $("#wedding-tips").click(function () {
    $("#general-tips-container,#travel-tips-container").hide('slow');
    $("#wedding-tips-container").show('slow');
    $("#wedding-tips").addClass("active");
    $("#general-tips,#travel-tips").removeClass("active");
 });

 $("#travel-tips").click(function () {
    $("#general-tips-container,#wedding-tips-container").hide('slow');
    $("#travel-tips-container").show('slow');
    $("#travel-tips").addClass("active");
    $("#wedding-tips,#general-tips").removeClass("active");
 });
});

http://jsfiddle.net/KAxmS/1/

コードの少ない新しいフィドルを参照してくださいhttp://jsfiddle.net/KAxmS/2/

于 2014-02-22T18:59:22.960 に答える