Событие jQuery .change () запускается с помощью .click () в более новых версиях?

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

Я создал здесь простой пример: http://jsfiddle.net/wDKPN/

Обратите внимание, если вы включаете 1.4.4, .change () функция не срабатывает, когда запускается событие .click () . Но при переходе на 1.6, событие .change () запускается, когда запускается .click () .

Два вопроса:

  1. Is это ошибка? Кажется, что программный запуск .click () не должен также запускать другие события (например, было бы неправильно также автоматически запускать .blur ( ) и .focus () , чтобы помочь имитировать щелчок пользователя).

  2. Как я могу правильно привязать событие 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 продолжит вести себя таким же образом в будущих версиях?

24
задан L84 24 June 2015 в 04:24
поделиться