В веб-приложении, использующем jQuery, у меня есть следующий код:
$("input[type=checkbox]").on("click", function (event) {
let isChecked = event.currentTarget.checked;
// Do something
});
Это будет делать что-то, когда пользователь нажимает на флажок.
Необходимо правильно инициализировать состояние страницы, вызывая этот обработчик событий один раз при загрузке страницы, чтобы он мог делать все, что было бы сделано при изменении флажка уже в начале.
Как я могу просто вызвать добавленный обработчик событий для всех совпадающих элементов, фактически не вызывая событие? В случае «щелчка» это изменило бы состояние флажка, что повредило бы данные.
Мой текущий обходной путь такой:
$("input[type=checkbox]")
.on("click change", function (event) {
let isChecked = event.currentTarget.checked;
// Do something
})
.change();
Это добавляет обработчик событий для нескольких событий и запускает только тот, который не имеет побочных эффектов. Но я бы хотел ограничить обработчики событий тем, что действительно необходимо. Если для элемента можно использовать только событие «щелкнуть», альтернативы нет. Также, в моем случае, только элементы скрыты или показаны, но если что-то случится, это может произойти дважды.
Я ищу функцию onAndNow
в этом примере псевдокода:
$("input[type=checkbox]").onAndNow("click", function (event) {
let isChecked = event.currentTarget.checked;
// Do something
});
Это еще одно не очень приятное и неполное решение:
function onCheckboxClicked(event) {
let isChecked = event.currentTarget.checked;
// Do something
}
$("input[type=checkbox]").on("click", onCheckboxClicked);
onCheckboxClicked(???);