jQuery rollover and css :hover



我正在尝试在Jquery中制作一个简单的导航栏。我想让文本在悬停时更改颜色,单击文本以保持悬停颜色。真的很简单,我已经使用悬停在 css 中完成了这个没有问题:然后在 JQuery 中使用单击函数。问题是一切正常,直到单击导航栏的某个项目。单击导航栏项后,:悬停不再起作用?我对css"OK",但对jQuery很陌生。我希望这不是一个愚蠢的问题,但在过去的 2 小时内,我试图使用各种 jQuery 代码来解决这个问题!代码只是变长,我修复了一个问题,但随后创建了另一个问题!如果您检查 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>

它不起作用的原因很简单: 当您在元素上"手动"设置颜色时,它将具有比悬停颜色更高的"优先级",并且将始终存在:

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

创建你自己的类(我们称之为"当前"),并在用户单击导航时添加/删除 --> http://jsfiddle.net/dmJ8p/

使用 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/

最新更新