jquery замена класса

188
27 декабря 2018, 22:10

Всем привет. Задача такая - нужно при клике по ссылке сестринскому элементу span присваивать класс badge-danger, в то же время если у сестринских элементов других ссылок из списка есть badge-danger - присвоить badge-info. Написал 2 функции, но они работают только порознь, если вместе - то при клике только присваивается badge-danger, а где он уже есть - не сбрасывается.

$("#brain_list li a").click(
    function () {
        if ($('#brain_list li span').hasClass("badge-danger")) {
            $('#brain_list li span').removeClass("badge-danger")
            $('#brain_list li span').addClass("badge-info")
        }
    },
    function () {
        $(this).siblings('span').addClass("badge-danger")
    }
);
Answer 1

решил самостоятельно

$("#brain_list li a").click(
    function () {
        $("#brain_list li a").siblings('span').not(this).removeClass("badge-danger").addClass("badge-info");
        $(this).siblings('span').removeClass("badge-info").addClass("badge-danger");
    }
);
Answer 2
$("#brain_list li a").click(
function () {
    $(this).siblings('span').addClass("badge-danger");
    $("#brain_list li a").each(function () {
        var t = $(this);
        if (t.hasClass("badge-danger")) {
            t.removeClass("badge-danger")
             .addClass("badge-info");
        }
    });
});

если правильно понял, то так должен работать

READ ALSO
Генерация enum на лету или альтернатива

Генерация enum на лету или альтернатива

Есть код ранее (был опубликован чуть ранее пользователем @iluxa1810)

193
C# Окно в потоке с Progress Bar timer

C# Окно в потоке с Progress Bar timer

В основном окне программы выполняются действия, необходимо, пока выполняются действия открыть другое окно и там чтобы заполнился progress bar например...

179
Расширение IEnumerable<T> по маске

Расширение IEnumerable<T> по маске

Кстати о Linq-однострочниках)

177