2014-01-05 36 views
1

我有一个没有类的div列表,当他们被点击时,他们得到'active'类但是当我点击列表中的第二个div我想要任何其他div即使用活动类来删除活动类。寻找元素,其中class =某个类和删除类

的HTML: -

<div id="div1" onclick="classchanger(this); return false;"><p>first item</p></div> 

    <div id="div2" onclick="classchanger(this); return false;"><p>second item</p></div> 

    <div id="div3" onclick="classchanger(this); return false;"><p>third item</p></div> 

点击一个div时jQuery来添加的类别: -

function classchanger(e) { 
    $(e).addClass("active"); 

    }; 

但是我需要删除这个类应该在不同的DIV来点击这样的作为: - (我试图实现的代码的一个例子。)

function classchanger(e) { 
    if(any div == class of active){ 
    the divs with a class of active .removeClass("active") 
    } 
    $(e).addClass("active"); 
    }; 

任何想法在这个或另一种方法我会很感激。

回答

3

你应该只改变你的classchanger功能

function classchanger(e) { 
    $("#container").find(".active").removeClass("active"); 
    $(e).addClass("active"); 
}; 

选择器选择所有与类“主动”的元素,并从中删除类。然后,您只需将该类添加到您点击的元素中。

+0

非常感谢你,是的伟大工程,这样显然简单,我不能相信,我从来没有想到这一点。这让我不得不在半夜醒来时,用我脑海中的那一行代码来唤醒。谢谢。 –

+0

非常欢迎。请记住在可以时将答案标记为正确。 – Loyalar

+0

如果我只是把它放在一个容器中,我如何去做这个选择的div。我怎么能缩小它说这个容器内的任何div?我发现页面上还有其他项目也使用活动类,所以我可以将它缩小。 (#) –

-2

HTML

<div id="div1" class="item"><p>first item</p></div> 
    <div id="div2" class="item"><p>second item</p></div> 
    <div id="div3" class="item"><p>third item</p></div> 

JS(jQuery的)

$(".item").on("click",function() { 
    $(".item").each(function() { $(this).removeClass("active"); }); 
    $(this).addClass("active"); 
}); 
+0

我想你的建议可行,但你不需要'.each()',你可以说'$(“。item”)。removeClass(“active”)'从所有匹配元素中移除类。 – nnnnnn

+0

habbit的力量(可能还有另一个需要删除类的项目) - 没有理由拒绝投票,因为这个解决方案也删除了内联点击事件并且在'item'元素的dom范围内工作 –

+0

我没有不会倒下。就像我说过的,我认为它会起作用,但它不是那么简单或高效。 – nnnnnn