【问题标题】:Switch menu color for current part of page切换页面当前部分的菜单颜色
【发布时间】:2012-02-06 01:02:33
【问题描述】:

我正在制作一个固定菜单的单页网站,因此当用户单击链接时,它会向下滚动到页面的该部分。用户所在部分的菜单链接应该有不同的颜色。为此,我有“当前”类。我正在尝试使用 jQuery addClass() 和 removeClass() 进行此更改,但没有运气。我到目前为止的代码如下。

$(document).ready ( function(){
    $(".about").click(function(){
        $(".home").removeClass("current");
        $(".about").addClass("current");
    });
});

编辑:

菜单 HTML:

<nav id="nav_list">
<ul>
<li class="home current"><a href="#">Home</a></li>
<li class="about"><a href="#about">About</a></li>
<li class="portfolio"><a href="#portfolio">Portfolio</a></li>
<li class="testimonials"><a href="#testimonials">Testimonials</a></li>
<li class="contact"><a href="#contact">Contact</a></li>
</ul>
</nav>

div HTML:

<div id="about" class="page">
<p>Lorem ipsum dolor sit</p>
</div>

(每个菜单链接都有一个 div。)

EDIT2

css:

#nav_list .current a{
color: #D4D1FA;
}

我注意到,如果我删除 #nav_list,我从一开始就看不到颜色的变化。

【问题讨论】:

  • 它在这里工作。jsfiddle.net/ylokesh/Vx3up
  • 那为什么在我使用它的地方不起作用...
  • 您有我们可以查看的实时链接吗?也许你可以添加一些 CSS - 这可能是一个问题,而不是没有添加类。当您自己添加类时,它是否按预期工作?
  • 抱歉,我没有该页面的实时版本。
  • 这与 CSS 无关。您说过如果您以about current 开始页面,那么about 链接将获得current 中设置的颜色。所以问题出在你的 JQuery 上,而不是你给我们的 JQuery 上——你的代码在其他地方一定有错误。

标签: jquery css


【解决方案1】:

试试这个 - 它会从所有列表项中删除当前类并将该类添加到单击的项中。

$("li").click(function(){
    $(".current").removeClass("current");
    $(this).addClass("current");
});

不过,要回答您的具体用例。将链接设置为显示为块。这会导致他们填充他们的列表项容器。然后监视链接单击而不是列表项单击。之前发生的事情是单击链接不会触发对列表项容器的单击,因此您的添加/删除类代码可能永远不会触发。通过使其填充您捕获所有点击的区域。

http://jsfiddle.net/hkZsL/

css

a { text-decoration: none; display: block; }
li { padding: 4px; border: 1px solid gray; width: 100px; float: left; }
.current { border: 1px solid red; }

javascript

$("a").click(function(){
    $(".current").removeClass("current");
    $(this).parent().addClass("current");
    return false;
});

【讨论】:

  • @Connor - 刚刚更新了我的答案,看看是否更有意义
  • 我已经将它设置为显示:块。我也尝试了更新的代码,但它仍然无法正常工作。
  • @Connor - 你能定义“不工作”吗?没有添加类?添加了类但样式没有改变?
  • 样式没有变化(.current 指定的新颜色没有显示)。
  • 听起来问题是你的css而不是你的jQuery。如果您使用带萤火虫的 Chrome 或 FF,您可以在列表项上单击鼠标右键并选择“检查元素”。在弹出的调试器窗口中展开“样式”框并查看样式被覆盖的位置
猜你喜欢
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多