Как вручную вызвать делегированное событие с помощью jQuery? ⇐ Jquery
-
Гость
Как вручную вызвать делегированное событие с помощью jQuery?
Есть ли способ с помощью jQuery вручную вызвать обработчик делегированных событий?
Возьмем следующий пример кода:
$('.контейнер') .on('click', '[type=button]', function(e) { $(e.delegateTarget).find('.output').text($(this).val()); }) .find('[type=button]').triggerHandler('click'); (Интернет: http://jsfiddle.net/TcHBE/)
Я ожидал, что это сработает и текст «Привет» появится в диапазоне без фактического нажатия кнопки, но это не так.
Я использую e.delegateTarget внутри обработчика, поскольку элемент .ouput не будет находиться в известном отношении к кнопке, кроме некоторого места внутри .container. Именно поэтому я в первую очередь использую делегированный обработчик событий.
Обновление:
Кроме того, я использую triggerHandler, поскольку в реальном коде событие имеет поведение по умолчанию, которое я не хочу запускать. (В реальном коде событие представляет собой пользовательское событие hide плагина Bootstrap Modal, но на самом деле я не хочу скрывать модальное окно при запуске обработчика событий при загрузке страницы).
Я мог бы извлечь обработчик в именованную функцию и вызвать ее напрямую, но из-за использования e.delegateTarget это усложнило бы конструкцию How.
Есть ли способ с помощью jQuery вручную вызвать обработчик делегированных событий?
Возьмем следующий пример кода:
$('.контейнер') .on('click', '[type=button]', function(e) { $(e.delegateTarget).find('.output').text($(this).val()); }) .find('[type=button]').triggerHandler('click'); (Интернет: http://jsfiddle.net/TcHBE/)
Я ожидал, что это сработает и текст «Привет» появится в диапазоне без фактического нажатия кнопки, но это не так.
Я использую e.delegateTarget внутри обработчика, поскольку элемент .ouput не будет находиться в известном отношении к кнопке, кроме некоторого места внутри .container. Именно поэтому я в первую очередь использую делегированный обработчик событий.
Обновление:
Кроме того, я использую triggerHandler, поскольку в реальном коде событие имеет поведение по умолчанию, которое я не хочу запускать. (В реальном коде событие представляет собой пользовательское событие hide плагина Bootstrap Modal, но на самом деле я не хочу скрывать модальное окно при запуске обработчика событий при загрузке страницы).
Я мог бы извлечь обработчик в именованную функцию и вызвать ее напрямую, но из-за использования e.delegateTarget это усложнило бы конструкцию How.
Мобильная версия