Как изменить класс CSS на теге Div в JQuery на основе определенного условия

0

У меня есть следующий HTML:

<div class="required">
<label for="personID">People</label>
<select name="personID" id="personID"  class="select">
<option value="" selected="selected" >No One Selected</option>
<option value="groupA" >Group A</option>
<option value="groupB" >Group B</option>
...

И у меня есть этот HTML:

<div class="visControl optional" style="display: none;">
<label for="refNum">Reference Number</label>
<input type="text" value="" name="refNum" id="refNum">
</div>

И у меня есть следующий SCRIPT:

<script>
  $('#personID').change(function() {
    if ($('#personID').val() == 'groupB') $('.visControl').show();
    else $('.visControl').hide();
  }); // end .change()
</script>

Мой скрипт правильно контролирует видимость блока Reference Number. Но то, что я хочу также сделать, это изменить атрибут класса от "необязательного" до "обязательного", чтобы он соответствовал видимости.

Другими словами, когда я показываю блок Reference Number, я хочу, чтобы div.optional стал div.required и когда я div.required блок Reference Number, я хочу, чтобы div.required стал div.optional

Теги:
toggle

2 ответа

1
Лучший ответ

Используйте .toggleClass():

Изменить:

if ($('#personID').val() == 'groupB') $('.visControl').show();
else $('.visControl').hide();

чтобы:

if ($('#personID').val() == 'groupB') $('.visControl').show().toggleClass('required  optional');
else $('.visControl').hide().toggleClass('required  optional');

Пример jsFiddle

  • 0
    Это не работает для меня. Я больше не получаю блок, чтобы показать или скрыть
  • 0
    Я просто добавил скрипку в свой ответ. Если вы посмотрите DOM при изменении выбора, вы увидите изменение класса.
Показать ещё 3 комментария
1

Пытаться:

$('div.optional').addClass('required'); 
$('div.optional').removeClass('optional');
  • 0
    хорошо, спасибо @CamTullos - сейчас попробую
  • 0
    Я думаю, что часть вашего ответа @CamTullos и часть [at] j8691 мне нужно объединить в 1. Это работает, но мне интересно, можно ли его упростить или объединить в 1 строку кода if ($('#personID').val() == 'groupB') { $('.visControl').show().addClass('required'); $('.visControl').show().removeClass('optional'); } else { $('.visControl').hide().addClass('optional'); $('.visControl').hide().removeClass('required'); }
Показать ещё 1 комментарий

Ещё вопросы

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