Есть обработчки нажатия на input checkbox
$(":checkbox").change(function () {
if (this.checked) {
$(":checkbox").css("box-shadow", "0 0 20px green");
} else {
$(":checkbox").css("box-shadow", "0 0 20px red");
}
});
Если на странице уже есть checkbox (в html) , то работает. Если нет ни одного checkbox до загрузки страницы - не работает.
Вопрос: как сделать, чтобы обработчик работал , даже если chеckbox добавляется после загрузки страницы (в jQuery)
Обработчик нужно навешивать на все, вновь создаваемые, элементы вручную
jQuery(function($) {
var checkClick = function() {
if (this.checked) {
$(":checkbox").css("box-shadow", "0 0 20px green");
} else {
$(":checkbox").css("box-shadow", "0 0 20px red");
}
};
$(":checkbox").change(checkClick);
$(":button").click(function() {
$(this).before(
$('<input type="checkbox" />').change(checkClick)
);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" />
<input type="button" value="Add">
Но, конкретно в Вашем случае, можно обойтись чистым CSS
jQuery(function($) {
$(":button").click(function() {
$(this).before(
$('<input type="checkbox" />')
);
});
});
input[type="checkbox"] {
box-shadow: 0 0 20px red;
}
input[type="checkbox"]:checked {
box-shadow: 0 0 20px green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" />
<input type="button" value="Add">
С помощью jQuery можно повесить обработчик события на блок, в который помещаются ваши checkbox, или даже на body. Т.е. так:
$('body').on('change',':checked', function() {
if (event.target.checked) {
$(":checkbox").css("box-shadow", "0 0 20px green");
} else {
$(":checkbox").css("box-shadow", "0 0 20px red");
}
});
Но в вашем случае действительно лучше подойдет css.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости