2012-01-30 3 views
0

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

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

jQuery documentation упоминает следующее:

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

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

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

Смежные вопросы