Есть ли какой-нибудь способ переключать классы без перезаписи того же кода

#javascript #jquery

#javascript #jquery

Вопрос:

Я работаю над небольшим проектом с использованием jQuery и провожу проверку формы, я хотел бы знать, есть ли какое-либо решение, позволяющее избежать повторителей в моем коде, говоря о (addClass и removeClass)

мой код :

 if (value.string.match(regex)) {
   $('#'   index).removeClass('is-invalid')
   $('#'   index).addClass('is-valid')
} else {
   $('#'   index).removeClass('is-valid')
   $('#'   index).addClass('is-invalid')
}
 

Комментарии:

1. вы устали toggleClass() ? api.jquery.com/toggleclass ?

Ответ №1:

Вместо того, чтобы иметь как is-invalid класс, так и is-valid класс, измените свой CSS, чтобы иметь только один класс, который переключается при изменении проверки. Например, вместо

 .some-input.is-valid {
  // rules
}
.some-input.is-invalid {
  // more rules
}
 

использовать

 .some-input {
  // rules
}
.some-input.invalid {
  // more rules WHICH OVERRIDE the original rules if needed
}
 

Тогда все, что вам нужно, это:

 const match = Boolean(value.string.match(regex));
$('#'   index).toggleClass('invalid', match);
 

Точно так же, как и с classList.toggle помощью, вы можете передать второй аргумент в jQuery toggleClass , чтобы указать, должен ли класс существовать или нет.