Создание события / запуск с помощью jQuery - PullRequest
0 голосов
/ 30 января 2012

В настоящее время я использую следующий код для запуска события из моей надстройки Firefox.

    var hiddenArea = document.getElementById("section_help");
    if (hiddenArea) {
        var evt = document.createEvent("MouseEvents");
        evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        hiddenArea.dispatchEvent(evt);
    }

Я пытался добиться того же с jQuery, используя

$("#section_help").trigger("click");

, ноне работаетjQuery не вызывает событие, которое было встроено в исходный код.

Где моя ошибка?

1 Ответ

1 голос
/ 30 января 2012

В документации jQuery упоминается следующее:

Хотя .trigger () имитирует активацию события вместе с синтезированный объект события, он не идеально копирует естественное событие.

Не совсем понятно, что они имеют в виду, поэтому мне пришлось взглянуть на исходный код. По-видимому, jQuery на самом деле не создает собственный объект события. Он будет просто запускать свои собственные обработчики событий (добавленные через jQuery) и все, что он может найти в onfoo свойствах. Обработчики событий, добавленные через addEventListener(), не сработают. Собственные действия, связанные с этим событием, не будут запускаться (однако, jQuery обрабатывает несколько особых случаев).

Подводя итог: лучше придерживаться своего старого способа создания событий. Это может быть более многословно, но оно делает то, что вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...