jQuery className和removeClass不起作用

时间:2014-02-24 08:08:25

标签: javascript jquery removeclass classname

我在长函数中有以下条件:

if ( shipSet == true ) {
    $("#" + shippingFields[i]).style.background = 'gray';
    $("#" + shippingFields[i]).className = 'optional';      
} else {
    $("#" + shippingFields[i]).removeAttribute('style');
    $("#" + shippingFields[i]).removeClass('optional');
}

style行可以正常工作,无论是真还是假,但classNameremoveClass行无法正常工作。有什么建议?我只是没有正确使用它们吗?

4 个答案:

答案 0 :(得分:4)

由于("#" + shippingFields[i])返回一个jQuery对象。

您需要使用addClass()removeClass()代替:

if ( shipSet == true ) {
    $("#" + shippingFields[i]).css('background','gray');
    $("#" + shippingFields[i]).addClass('optional');      
} else {
    $("#" + shippingFields[i]).removeAttr('style');
    $("#" + shippingFields[i]).removeClass('optional');
}

此外,您可以使用css()设置元素的样式。

答案 1 :(得分:2)

您应该使用addClass(将类添加到元素)和removeClass(从元素中删除类):

$("#" + shippingFields[i]).addClass('optional');      
$("#" + shippingFields[i]).removeClass('optional');

答案 2 :(得分:1)

if ( shipSet == true ) {
    $("#" + shippingFields[i]).css('background','gray');
    $("#" + shippingFields[i]).addClass('optional');      
} else {
    $("#" + shippingFields[i]).removeAttr('style');
    $("#" + shippingFields[i]).removeClass('optional');
}

答案 3 :(得分:1)

尝试此操作,添加类名始终使用$("#attributeID").addClass('ClassName');

if ( shipSet == true ) {
    $("#" + shippingFields[i]).css('background','gray');
    $("#" + shippingFields[i]).addClass('optional');      
} else {
    $("#" + shippingFields[i]).removeAttr('style');
    $("#" + shippingFields[i]).removeClass('optional');
}