Задать вопрос
greyhard
@greyhard
Программист, автолюбитель

Как активировать событие на элементе из javascript?

Есть чекбокс на нем висит функция по событию onchange

При изменений стостояния чекбокса из скрипта через .attr(«checked»,«checked») событие не срабатывает.

Подскажите как изменять элемент что бы событие срабатывало, или как принудительно сообщать что элемент изменился.
  • Вопрос задан
  • 9912 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя itlife К ответам на вопрос (5)
itlife
@itlife
Есть такие камушки подводные

1. $(element).click(); — Чекбокс изменит состояние во всех браузерах, но в Опере при этом не сработает событие change, которое в других браузерах срабатывает вслед за click…

2. $(element).change() — не во всех браузерах меняет состояние чекбокса, кажется тут уже IE отличился… но не помню точно… ) В моём случае удовлетворило $(element).click().change() если не беспокоится о двойных срабатываниях. Если событие change не важно… достаточно $(element).click();

3. После динамического изменения чекбокса, становится неожиданно трудно в js проверить 1 он или 0 получился… При проверки атрибута attr('checked') или свойства checked у DOM объекта дают разные результаты в каких-то браузерах. Если проверять во время клика вполне вероятно расхождение из-за того что одни браузеры меняют состояние чекбокса до клика другие после клика. Если в обработчике клика проверять состояние чекбокса, то можно наткнуться на разные результаы в разных браузерах, но это лишь подозрения… так как все глюки исчезли с использованием jquery селектора value=$(element).is(':checked'); чего и советую :)
Ответ написан
Комментировать