Программно изменяющийся флажок не запускает событие изменения

У меня есть следующий код здесь:

$('input[type="checkbox"][id="gridlines"]').change(function () {
    alert('hello world');
});

$('#gridlines').prop('checked', true);

Когда я загружаю свою страницу, флажок установлен, но "привет мир" не запрашивается

Однако, когда я нажимаю на флажок вручную, "привет мир" запрашивается

Что дает?

Ответ 1

Вам нужно позвонить change() или использовать trigger(), чтобы изменить событие change, когда значения изменены с помощью кода.

Используя .change()

$('#gridlines').prop('checked', true).change();

Используя .trigger()

$('#gridlines').prop('checked', true).trigger("change");

Ответ 2

Вот как это должно работать, только взаимодействие с пользователем - это поддержка запуска события изменения

Вы можете запустить его вручную, используя . change()/. trigger ( 'изменение');

$('#gridlines').prop('checked', true).change();

change

Событие изменения запускается для <input>, <select> и <textarea>элементов, когда изменение значения элемента фиксируется пользователь. В отличие от события ввода событие изменения не обязательно для каждого изменения значения элемента.