2014-02-24 90 views
0

我有很長的函數以下條件:jQuery的類名和removeClass不工作

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

style線做工精細,無論是真的還是假的,但classNameremoveClass線不工作。有什麼建議麼?我只是沒有正確使用它們嗎?

+0

'$(「#」+ shippingFields [i])。style.'應該是$(「#」+ shippingFields [i])[0] .style.'。您需要了解DOM元素和jQuery對象的區別。 – Satpal

+0

'className'是DOM元素的屬性,不是jQuery函數。你應該使用jQuery的css函數:'$(「#」+ shippingFields [i])。css(「background」,「gray」);' – CodingIntrigue

+0

即使我使用document.getElementById(shippingFields [i]) .className ='可選';'它仍然不起作用。和@Satpal,'風格線條工作精美' – KingRichard

回答

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()設置風格的元素。

+0

工作就像一個魅力!我也喜歡清潔的CSS線! thx – KingRichard

+0

很高興幫助!快樂編碼伴侶:) – Felix

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

您應該使用addClass(添加類元素)和removeClass(從元素中刪除類):

$("#" + shippingFields[i]).addClass('optional');  
$("#" + shippingFields[i]).removeClass('optional'); 
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'); 
}