2014-01-05 2 views
1

У меня есть список divs без класса, когда они нажимаются, они получают класс 'active', но когда я нажимаю второй div в списке, я хочу, чтобы любой другой div который использует класс active для сброса класса active.Найти элементы, где class = определенный класс и класс delete

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> 

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

Как я могу сделать это только для выбранных divs, если я должен положить его в контейнер. Как я мог просто сузить его, чтобы сказать какие-то 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 (может потребоваться другой процесс, необходимый для элементов для удаления класса) - нет причин для понижающего голоса, так как это решение также удаляет событие встроенного клика и работает в пределах dom-элементов элементов «item». –

+0

Я didn Нет. Как я уже сказал, я думаю, что это сработает, это просто не так просто или эффективно, как могло бы быть. – nnnnnn

Смежные вопросы