jQuery .removeClass()不起作用

时间:2014-02-24 21:08:13

标签: jquery css

我需要从文本字段中删除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()删除所有类,但这也不起作用..

6 个答案:

答案 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');

所以,也许您的问题与对象是数组或任何不兼容的类型有关。