jQuery className и removeClass не работают

0

У меня есть следующее условие в длинной функции:

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

строки style работают нормально, правда или ложно, но className и removeClass не работают. Какие-либо предложения? Я просто не использую их правильно?

  • 0
    $("#" + shippingFields[i]).style. должно быть $("#" + shippingFields[i])[0].style. , Вы должны понимать разницу между элементом DOM и объектом jQuery.
  • 0
    className - это свойство элемента DOM, а не функция jQuery. Вместо этого вы должны использовать функцию jquery css: $("#" + shippingFields[i]).css("background", "gray");
Показать ещё 1 комментарий
Теги:
classname
removeclass

4 ответа

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! Спасибо
  • 0
    Рад, что это помогло! Удачного кодирования приятель :)
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');
}
1
if ( shipSet == true ) {
    $("#" + shippingFields[i]).css('background','gray');
    $("#" + shippingFields[i]).addClass('optional');      
} else {
    $("#" + shippingFields[i]).removeAttr('style');
    $("#" + shippingFields[i]).removeClass('optional');
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню