-2

我有一个使用 class="active" 显示活动状态的导航。单击链接时,我需要将“活动”类添加到单击的链接中,并从所有其他链接中删除“活动”类。

这是我的代码:

<div id="referNav">
<div id="referLink1"><a href="javascript:;" onClick="changeClass();" class="active"></a></div>
<div id="referLink2"><a href="javascript:;" onClick="changeClass();" class=""></a></div>
<div id="referLink3"><a href="javascript:;" onClick="changeClass();" class=""></a></div>
</div>

任何帮助将不胜感激!

4

3 回答 3

5

尝试这个:

function changeClass() {
    $('#referNav a').removeClass('active');
    $(this).addClass('active');
}

您还应该像这样在 javacript 中绑定函数:

$('#referNav a').on('click', changeClass);

这样,正如 Travis J 在评论中指出的那样,$(this)将引用正确的对象。

jsFiddle

于 2013-03-26T19:22:15.483 回答
1

您需要做的是创建一个名为的函数,该函数changeClass将查找class="active"然后删除该类。然后将类名分配给active刚刚单击的元素。将被点击的元素传递给函数将是有益的,这样您就会知道点击了哪个元素。否则,您可以使用全局对象event并查看当前targetElement是什么。

我不愿意仅仅展示一个解决方案,因为这种类型的问题是不被鼓励的。人们应该做自己的工作。但是,由于这是一个简单的情况:jsFiddle demo

$("div[id^=referLink] a").click(function(){
 $('#referNav .active').removeClass('active');
 $(this).addClass('active');
});
于 2013-03-26T19:23:24.390 回答
0

我的解决方案

 $('#referNav').on('div','click',functin(e){
    $(e.target).closest('div[class^="referLink"]').siblings().find('a').removeClass('active');
    $(e.target).closest('div').find('a').addClass('active');
    });
于 2013-03-26T19:25:14.583 回答