JQuery.removeClass() не работает

Мне нужно удалить класс CSS из текстового поля, так как я хочу изменить его цвет фона. Мне нужно изменить цвет позже, поэтому мне нужно добавить и удалить классы в поле, в зависимости от некоторых данных.

.addClass работает отлично. Проблема в том, что исходный класс выше добавленного, поэтому изменения не отображаются, но класс добавлен правильно. Теперь я пытаюсь удалить класс, который выше добавленного, но я не могу удалить любые классы из своих элементов. Почему это? Что я делаю не так? Здесь код:

if(i.stadt=="T") {
    $("#stadtInput").removeClass("ui-input-text input");
    $("#stadtInput").removeClass("ui-input-search input");
    $("#stadtInput").addClass( 'textboxRight' );
} else {
    $("#stadtInput").addClass( 'textboxWrong' );
}

Если я проверяю элементы с помощью Webdev-Tools браузера, я вижу, что класс textboxRight/textboxWrong добавлен, но класс не удаляется. Я уже пытался удалить все классы с помощью .removeClass(), но это тоже не работает.

Ответы

Ответ 1

Я не уверен, что это будет соответствовать вашим спецификациям, но метод jQuery attr() примет два аргумента и заменит все классы на имя класса, которое вы предоставляете. Это не будет работать, если у вас есть другие классы, которые вы хотите сохранить в своем элементе, но если не попробовать:

    $("#stadtInput").attr("class", "textboxRight");

Ответ 2

Следующие несколько строк работают для меня

var current = $(el).closest(".panel").find(".panel-collapse");
    if( $(current).hasClass("in") ) {
        setTimeout(function(){///workaround
            $(".panel-collapse").removeClass("in");
        }, 10);
    } else {
        $(current).addClass("in");
    }

Ответ 3

У меня была такая же проблема при работе с рельсовым приложением с HAML шаблоном, поскольку я включил # в самом начале, и это действительно не нужно. Когда я удалил его, он начал работать.

Надеюсь, это поможет!:)