@maxsnw

Как изменять и удалять класс только у конкретного элемента с одинаковыми классами?

Есть простенький скрипт по присваиванию класса селекту, но таких селектов на странице несколько, соответственно, если я меняю option у одного, класс присваивается всем селектам на странице. Как сделать так, что бы класс добавлялся только конкретному селекту с которым я взаимодействую в данный момент? Так же приму к сведению улучшение читаемости кода.
код ниже:
$(".currency-type").change(function(){
    if($(this).val() == 1){
        $(".currency-type").addClass('currency-usd');
        $(".currency-type").removeClass('currency-eur currency-rub currency-chf currency-gbp');
    }
    else {
        $(".currency-type").removeClass('currency-usd');
    }
    if($(this).val() == 2){
        $(".currency-type").addClass('currency-eur');
        $(".currency-type").removeClass('currency-usd currency-rub currency-chf currency-gbp');
    }
    else {
        $(".currency-type").removeClass('currency-eur');
    }
    if($(this).val() == 3){
        $(".currency-type").addClass('currency-rub');
        $(".currency-type").removeClass('currency-usd currency-eur currency-chf currency-gbp');
    }
    else {
        $(".currency-type").removeClass('currency-rub');
    }
    if($(this).val() == 4){
        $(".currency-type").addClass('currency-gbp');
        $(".currency-type").removeClass('currency-usd currency-rub currency-chf currency-eur');
    }
    else {
        $(".currency-type").removeClass('currency-gbp');
    }
    if($(this).val() == 5){
        $(".currency-type").addClass('currency-chf');
        $(".currency-type").removeClass('currency-usd currency-rub currency-gbp currency-eur');
    }
    else {
        $(".currency-type").removeClass('currency-chf');
    }
});


UPD: Так-с, возникла теперь другая беда если использовать (this). Так как я использую стилизацию селекта, то плагин скрывает дефолтный селект и ставит свой див с классом селекта и классом плагина (.nice-select). По коду я вижу, что при изменении классы присваиваются, но они присваиваются данному селекту, который скрыт, а плагиновский блок, так и остается висеть сам по себе без изменений.
  • Вопрос задан
  • 326 просмотров
Пригласить эксперта
Ответы на вопрос 3
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
В value писать не числа, а имя класса.
Тогда:
$(".currency-type").change(function(){
 this.addClass(this.val());
}
Ответ написан
Комментировать
@AnneSmith
самая ленивая
учитесь назначать элементам уникальные id и всегда обращаться через них в коде, и будет вам счастье

а css классы оставьте для дизайна

улучшения читаемости кода у вас не будет до тех пор, пока вы не будете ясно представлять, что у вас происходит на странице, и уж ни в каком варианте улучшение читаемости кода не может быть самоцелью

сначала объектная модель и алгоритм, а потом уже читаемость появлятся сама
Ответ написан
@SOKR
Попробуйте как тут, не идеал, конечно, но читаемость улучшена.
https://codepen.io/diadiafiodor/pen/yPWNYj
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы