2015-09-10 5 views
3

Есть ли способ настроить прослушиватель событий, чтобы он захватывал событие, запущенное jQuery? Я хочу использовать только обычный (ванильный) JavaScript для прослушивания события.Прослушать событие jQuery без jQuery

Я создал следующий пример:

(function($) { 

    $(document).on('sent_jquery_rec_jquery', function() { 
     console.log('sent_jquery_rec_jquery'); 
    }); 

    $(document).on('sent_vanilla_rec_jquery', function() { 
     console.log('sent_vanilla_rec_jquery'); 
    }); 

    document.addEventListener('sent_vanilla_rec_vanilla', function() { 
     console.log('sent_vanilla_rec_vanilla'); 
    }); 

    document.addEventListener('sent_jquery_rec_vanilla', function() { 
     console.log('sent_jquery_rec_vanilla'); 
    }); 

    document.dispatchEvent(new Event("sent_vanilla_rec_vanilla")); 
    document.dispatchEvent(new Event("sent_vanilla_rec_jquery")); 

    $(document).trigger('sent_jquery_rec_jquery'); 
    $(document).trigger('sent_jquery_rec_vanilla'); 

}(jQuery)); 

Три события, которые принимаются и регистрируются, являются:

  • sent_vanilla_rec_vanilla
  • sent_vanilla_rec_jquery
  • sent_jquery_rec_jquery

Когда событие отправлено через $(document).trigger, прослушиватель событий, настроенный с document.addEventListener, не влечет за собой. В чем причина этого и как я могу заставить его работать?

+0

Имеет ли значение, если вы добавилиEventListener после регистрации триггеров? –

+2

Может быть, это связано с этим? http://stackoverflow.com/questions/18823872/jquery-dispatchevent-wrapper-method – Danilo

ответ

0

JQuery apparently uses a custom event system, поэтому вы не можете слушать события jQuery с помощью обычного прослушивателя событий. В вышеупомянутом билете упоминается IE < 9 как преступник, возможно, jQuery 3 или 4 может сделать переключатель.

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