jQuery .removeClass()不工作

30byixjq  于 2023-06-05  发布在  jQuery
关注(0)|答案(7)|浏览(306)

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

sdnqo3pr

sdnqo3pr1#

我不确定这是否符合您的规范,但jQuery attr()方法将接受两个参数,并将所有类替换为您提供的类名。如果你想在元素中保留其他类,这将不起作用,但如果没有,请尝试:

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

gcuhipw92#

接下来的几行对我来说很管用

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

e5nqia273#

之前就有这个问题。我还不是jquery的Maven,所以我不知道它的行为是否像css的特异性。我的解决方法是通过使用更高的特异性来删除这个类。例如,不要使用$(this).removeClass('acb'),尝试使用更高的特异性,如$('#div1').children().first()

t30tvxxf

t30tvxxf4#

我也遇到过类似的问题。jQuery返回的数组只有一个元素。跟我来:

var jqueryObject = $("#prefix-" + itemNum); <-- this gave me an array of 1.

而不是

jqueryObject.removeClass("some-class");

我需要

jqueryObject[0].removeClass("some-class");
1tu0hz3e

1tu0hz3e5#

我在使用HAML模板gem开发rails应用程序时遇到了同样的问题,因为我在一开始就包含了#,但实际上并不需要它。当我把它取下来的时候,它就开始工作了。
希望这有帮助!:)

ztyzrc3y

ztyzrc3y6#

假设一个元素数组:

var someElements = document.querySelectorAll('.someClass');

不起作用:someElements[1].removeClass('.someClassToRemove');

已工作:$(someElements[1]).removeClass('.someClassToRemove');

因此,您的问题可能与对象是数组或任何不兼容类型有关。

t8e9dugd

t8e9dugd7#

我也有这个问题。我很快发现它不适用于svg元素,这给了我更新jQuery版本(使用1.8.2)的线索。这就解决了问题。

相关问题