2013-03-26 60 views
-2

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

这里是我的代码:

<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> 

任何帮助将不胜感激!

回答

5

试试这个:

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

而且你还要绑定功能javacript像这样:

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

这样一来,作为特拉维斯法官在评论中指出,$(this)将引用正确目的。

jsFiddle

+0

注意,因为这个功能不会成为一个事件,'this'将是窗口的引用。 – 2013-03-26 19:23:54

0

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

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

$("div[id^=referLink] a").click(function(){ 
$('#referNav .active').removeClass('active'); 
$(this).addClass('active'); 
}); 
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'); 
    });