В настоящее время я обновляю свое приложение для использования jQuery 1.6.1 (ранее использовавшего 1.4.4) и обнаружил, что теперь событие .click ()
автоматически запускает .change ()
также.
Я создал здесь простой пример: http://jsfiddle.net/wDKPN/
Обратите внимание, если вы включаете 1.4.4, .change ()
функция не срабатывает, когда запускается событие .click ()
. Но при переходе на 1.6, событие .change ()
запускается, когда запускается .click ()
.
Два вопроса:
Is это ошибка? Кажется, что программный запуск .click ()
не должен также запускать другие события (например, было бы неправильно также автоматически запускать .blur ( )
и .focus ()
, чтобы помочь имитировать щелчок пользователя).
Как я могу правильно привязать событие change ()
, а затем запускают оба click ()
и change ()
событие для этого элемента? Я просто вызываю .click ()
, и полагаться на тот факт, что .change ()
также сработает?
$ ('# myelement'). change (function () {
// делаем кое-что
});
$ ('# myelement'). click (); // и щелчок, и изменение сработают, ура!
В моем старом коде я использую этот шаблон для инициализации некоторых флажков (и их отмеченных состояний и значений) после вызова ajax:
$('#myelement').change(function() {
// do some stuff including ajax work
}).click().change();
Но в 1.6.1 моя логика срабатывает дважды (один раз для .click ()
и один раз для .change ()
). Могу ли я полагаться на простое удаление триггера .change ()
и надеяться, что jQuery продолжит вести себя таким же образом в будущих версиях?