Показать сообщение отдельно
  #1 (permalink)  
Старый 17.03.2018, 15:17
Аспирант
Отправить личное сообщение для Tipylja Посмотреть профиль Найти все сообщения от Tipylja
 
Регистрация: 17.04.2017
Сообщений: 72

Управление checkbox'ами
Здравствуйте, делаю некое подобие БЭМ-компонентов. Дошел до checkbox. Есть вот такая структура чекбокса:
<label class="checkbox checkbox--size-m">
    <span class="checkbox__box">
        <input class="checkbox__control" type="checkbox" autocomplete="off">
    </span>
    <span class="checkbox__text">Коробка</span>
</label>

При клике на checkbox, вернее на label с классом checkbox, элементу label добавляется класс .checkbox--checked, а непосредственно инпату(который и является чекбоксом) с классом .checkbox__control добавляется атрибут checked="checked":
<label class="checkbox checkbox--size-m checkbox--checked">
    <span class="checkbox__box">
        <input class="checkbox__control" type="checkbox" autocomplete="off" checked="checked">
    </span>
    <span class="checkbox__text" >Конфеты</span>
</label>

Вот такой код мне удалось написать для выполнения этой задачи:
$(function() {
    $(".checkbox").on("click", function(event) {
        event.preventDefault();       
        $(this).toggleClass("checkbox--checked");

        var chekcbox = $(this).children().children('.checkbox__control');
        
        if (chekcbox.attr('checked')) {
            chekcbox.removeAttr('checked');
        } else {
            chekcbox.attr('checked', 'checked');
        };

    });
});

Все в принципе работает, никаких проблем я не обнаружил пока, но насколько это правильно. Допустим правильно ли отслеживать именно клик $(".checkbox").on("click" .....) или возможно есть более подходящее событие. И очень смущает поиск инпата $(this).children().children('.checkbox__control'). Подскажите нормальное ли решение или есть что можно подправить? Спасибо
Ответить с цитированием