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
шаблоном, поскольку я включил #
в самом начале, и это действительно не нужно. Когда я удалил его, он начал работать.
Надеюсь, это поможет!:)