2014-01-05 44 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