Хорошо, поэтому мне нужно иметь возможность щелкнуть любой элемент внутри .modal-interest
, и он должен проверить флажок child-element при нажатии.
В настоящее время он работает для первого щелчка, но для каждого последующего щелчка, хотя код должен проверять флажок, он ничего не делает.
$('.modal-interest strong').click(function (e) {
input = $(this).closest('.modal-interest').find('input');
if (input.prop('checked')) {
input.attr('checked', false).change();
} else {
input.attr('checked', true).change();
}
});
Точное представление моей проблемы можно увидеть на следующем скрипте:
Застрял с этим и был бы признателен за любую помощь!
Вместо этого вы должны использовать .prop()
:
$('.modal-interest strong').click(function (e) {
input = $(this).closest('.modal-interest').find('input');
if (input.prop('checked')) {
input.prop('checked', false).change();
$('h1').html('untick it');
} else {
input.prop('checked', true).change();
$('h1').html('tick it');
}
});
Теперь, действительно, ваш код должен выглядеть следующим образом:
$('.modal-interest strong').click(function (e) {
var input = $(this).closest('.modal-interest').find('input')[0];
input.checked = !input.checked;
$(input).change();
});
$('.modal-interest input[type=checkbox]').on('change', function () {
$('h1').html(this.checked ? 'tick it' : 'untick it');
});
Используйте .prop()
чтобы установить checked/Unchecked
input.prop('checked', false).change();
Необходимо использовать метод prop.
input.prop('checked', false).change();
Попробуйте этот код:
$('.modal-interest').click(function () {
var input = $(this).find('input');
if (input.prop('checked')) {
input.prop('checked', false).change();
$('h1').html('untick it');
} else {
input.prop('checked', true).change();
$('h1').html('tick it');
}
});