我需要从文本字段中删除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()
删除所有类,但这也不起作用..
答案 0 :(得分:23)
我不确定这是否符合您的规范,但jQuery attr()方法将采用两个参数并用您提供的类名替换所有类。如果你想在你的元素上保留其他类,这将不起作用,但如果没有,请尝试:
$("#stadtInput").attr("class", "textboxRight");
答案 1 :(得分:6)
接下来的几行适用于我
var current = $(el).closest(".panel").find(".panel-collapse");
if( $(current).hasClass("in") ) {
setTimeout(function(){///workaround
$(".panel-collapse").removeClass("in");
}, 10);
} else {
$(current).addClass("in");
}
答案 2 :(得分:2)
我在使用HAML
模板宝石的rails应用程序时遇到了同样的问题,因为我在一开始就包含了#
,并不是真的需要它。当我删除它时,它开始工作。
希望这有帮助! :)
答案 3 :(得分:2)
此问题较早出现。还不是jquery的专家,所以我不知道它的行为是否像CSS的特异性。我的解决方法是通过使用更高的特异性删除类。例如
与其使用$(this).removeClass('acb')
,不如使用$('#div1').children().first()
答案 4 :(得分:0)
我有类似的问题。事实证明,jQuery返回的数组只有一个项目。在这里关注我:
var jqueryObject = $("#prefix-" + itemNum); <-- this gave me an array of 1.
代替
jqueryObject.removeClass("some-class");
我需要
jqueryObject[0].removeClass("some-class");
答案 5 :(得分:0)
假设一个元素数组:
var someElements = document.querySelectorAll('.someClass');
无效:someElements[1].removeClass('.someClassToRemove');
工作: $(someElements[1]).removeClass('.someClassToRemove');
所以,也许您的问题与对象是数组或任何不兼容的类型有关。