2015-11-10 2 views
1

Я пытаюсь найти цель DOM события, когда есть вложенные вызовы jQuery. Если бы был только один уровень вызова, event.target получал бы цель DOM, и я мог бы идти оттуда. Но как пройти через вложенные звонки?Могу ли я получить event.target, когда есть вложенные вызовы jQuery

Я тестирую с яваскриптом функцией

jQuery(document).bind('gform_post_render', function(event, formID){ 
    jQuery("#id").val(event.target.nodeName); 
}); 

Я могу смотреть на event.target.nodeName и посмотреть, что это «#document». Я предполагаю, что это потому, что триггер, который называется эта функция была что-то вроде

jQuery(document).trigger('gform_post_render', ...); 

И я думаю, что есть еще один уровень или два звонков выше этого. То, что я хотел бы быть в состоянии сделать что-то вроде

event.trigger.event.trigger.closest(.classname).attr("attname"); 

хотя я понимаю, что «event.target.event.target» не допускается.

Есть ли способ сделать это?

BTW, то, что я пытаюсь сделать, это извлечь часть данных из HTML, которая собирается через пару плагинов WordPress (всплывающие и гравитационные формы), которые выполняют вызовы jQuery. Поэтому у меня нет возможности изменить ситуацию, просто пытаюсь разобраться с тем, что они сделали.

Спасибо за любые советы

ответ

0

Вы можете передать аргумент данных в trigger, а затем получить доступ к нему в обработчике. Таким образом, вы передать его так:

$(document).trigger('gform_post_render', {target: event.target}); 

, а затем в обработчике:

$(document).on('gform_post_render', function(event, data) { 
    var target = data.target; 
    ... 
}); 
+0

К сожалению, я не могу изменить триггер звонки - то есть в JavaScript, созданный плагин, и я дон Не думаю, что это даже возможно обойти все это. –

+0

Тогда я думаю, что ты завинчен. События не связаны друг с другом автоматически только потому, что вы запускаете одно событие в обработчике для другого. – Barmar

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