Есть независимые блоки с карточками. Они могут быть и с радиокнопками и с чекбоксами. Мне надо сделать так, чтобы при клике на карточку активировался или выключался и чекбокс(радиокнопка) и сам div (переключается рамка вокруг). У меня почему то при клике по div-у так и работает, но если кликать непосредственно в инпут, то скрипт не срабатывает. Если кто подскажет в чем дело, буду очень благодарна!
https://codepen.io/Raneto4ka/pen/Ezqevb
function activeCardPreview(){
$('.preview .wrapper-cards .custom-radio').on('click', function(){
$(this).parent().siblings('.wrapper-cards').removeClass('checked');
$(this).parent().toggleClass('checked');
if ($(this).parent().hasClass('checked')){
$(this).find('.card-check').prop('checked', true);
}
else {
$(this).find('.card-check').prop('checked', false);
}
});
$('.preview .wrapper-cards .custom-checkbox').on('click', function(){
$(this).parent().toggleClass('checked');
if ($(this).parent().hasClass('checked')){
$(this).find('.card-check').prop('checked', true);
}
else {
$(this).find('.card-check').prop('checked', false);
}
});
};
activeCardPreview();
prevetDefault()
отключает дефолтное поведение при клике на элемент (если оно есть). И прокатывает написанный выше on('click'...
Но остается под вопросом, зачем там label, в таком случае... можно его заменить на какой-нибудь span и обойтись вообще без добавленного куска JS.
CodePen
$('.wrapper-cards .custom-radio').on('click', function(){
$(this).parent().siblings('.wrapper-cards').removeClass('checked');
$(this).parent().toggleClass('checked');
var check = $(this).parent().hasClass('checked');
// Оно и так проверяет и возвращает true или false
$(this).find('.card-check').prop('checked', check).trigger('change');
});
$('.wrapper-cards .custom-checkbox').on('click', function(){
$(this).parent().toggleClass('checked');
var check = $(this).parent().hasClass('checked');
$(this).find('.card-check').prop('checked', check).trigger('change');
});
$('.custom-control-label').on('click', function(e){
e.preventDefault();
});
.trigger('change')
— это чтобы и без label, если на инпуте будет событие on('change'...)
— оно сработало. Можно убрать, если такого не предвидится.
(p.s.) а если чекбоксы там несут исключительно декоративный характер, там еще много чего можно убрать, привязав всё к добавляемому классу)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Здравствуйте уважаемые форумчане, подскажите пожалуйстаЕсть около 10 всяких различных методов которые используют Аякс, и они продолжают...
Возник небольшой момент непонимания в плане импорта - экспорта в вебпакеВ моём представлении, если я импортирую какой-либо фрагмент кода...
Пишу первую игру на JavaScriptКаждая игровая клетка имеет свой ID