Javascript 在菜单中更改类

Javascript 在菜单中更改类,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我从这里的社区得到了很大的帮助,我再次伸出了援助之手。 这是我的问题。我有菜单 主页 公司 分包 联系 它调用一个js函数onclick。这工作正常,我现在要做的是将class=“current”更新到单击的项目。这里是我的另一个js函数,它不起作用 <script language="javascript" type="text/javascript"> $(".nav a#home").addClass("current"); $("a").click

我从这里的社区得到了很大的帮助,我再次伸出了援助之手。 这是我的问题。我有菜单

    主页
  • 公司
  • 分包
  • 联系

它调用一个js函数onclick。这工作正常,我现在要做的是将class=“current”更新到单击的项目。这里是我的另一个js函数,它不起作用

<script language="javascript" type="text/javascript">

   $(".nav a#home").addClass("current");


   $("a").click(function(){
    $("a").removeClass("current");
    $(this).addClass("current");
   });
</script>

$(“.nav a#home”).addClass(“当前”);
$(“a”)。单击(函数(){
$(“a”).removeClass(“当前”);
$(此).addClass(“当前”);
});

任何帮助都会很棒。提前谢谢。

对我来说似乎很好

我正在使用您的代码:

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

请参见创建dom后是否运行脚本?
如果没有,您可以将脚本移动到低于html的位置,或者像这样使用load事件:

$(document).ready(function() {
   $(".nav a#home").addClass("current");


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

您正在删除脚本可以找到的第一个“a”的类。您应该使用以下选项:

$("a").each(function() {
  $(this).removeClass("current");
}
而不是
$(“a”)。removeClass(“当前”)

您还必须将所有内容包装在一个文档中:

$(document).ready(function() {
   //code

});

同时发布css代码。你必须使用
$(“a”)。each()
$(“a.current”)
而不仅仅是
$(“a”)
。这对我来说很有效,看起来你没有包含任何jQuery库。@KingKing有时是我们错过的简单的s#$t,对吧。我加载了jQuery库,但它位于正文的底部。我将CnhClass函数移到了它下面,也感谢emn178。这就是为什么我喜欢这里,乐于助人的人的快速反应。再次感谢所有人。@user3547741是的,即时回复是成功实现SO的最重要因素之一,而许多论坛/问答网站要求我们通过F5查看回复,这太糟糕了。和
$(“A.current”)。removeClass(“current”)
与@emn178配合使用会更好,但如果
$(“nav a.current”).removeClass(“current”)
集合。removeClass
将删除集合中所有项上的类,请参见此,这样OP的代码就不会出错。我们不需要在这里使用
每个
。有趣!这是新事物吗?我知道有些情况下这对我不起作用。@Hauke我不认为这是新的,在
jQuery
中有一条规则需要记住,当你使用一个方法修改/添加某个内容时,它将应用于集合中的所有项目,但当你使用一个方法仅获取集合中的某个内容时,它将只返回第一个项目的值(如
attr
)。请注意,我今天刚刚学习了jQuery。(来自.NET world:)很高兴知道,也许我只是混合了这一点。如King King所述,请确保包括库(可能是因为您提到了另一个运行良好的函数)也可以尝试用
文档包装代码。准备好了,就像其他答案所建议的那样。
$(document).ready(function() {
   //code

});