如何捕获jQuery.event.trigger()?

我想使用未设置为DOM元素的jQuery构建自定义事件。

它在jQuery描述中说:

jQuery.event.trigger('test'); 

是触发自定义事件。

但我怎么能抓住它?

提前thx

我想你问的是那个自定义事件(至少我试图抓住trigger没有意义):用.bind完成:

 $('some_selector').bind('test', function() { console.log('Test was caught'); } ); 

更新:实际上不,你不需要一个选择器 – 只是一个对象成为事件的’主持人’。 你可以使用这样的东西:

 // taken from the comments at the Doc page var o = {length: 3}; $(o).bind( 'custom', function(){ console.log('hi') } ); $(o).trigger('custom'); // Output hi hi hi 

我想你们都错过了这个问题。 他不是在问你如何监听一个物体上触发的事件。 他问你如何通过jQuery.event.trigger()直接触发事件。

我在http://www.sitepoint.com/jquery-custom-events/上找到了一篇非常好的文章。

基本上你只是听文档对象。

 $(document).on("test", function(event, data) { console.log(data) }); $.event.trigger('test', [{ foo: 'bar' }]); 

你应该将事件的目标元素传递给jQuery.event.trigger(),如下所示:

 jQuery.event.trigger('test', null, element); 

所以当你想抓住它时,你可以使用:

 $(element).on('test', fn); 

您可以在jQuery源代码中找到jQuery.event.trigger的定义和用法:

在阅读了jQuery的源代码之后,你会发现jQuery.event.trigger的定义:

 jQuery.event = { ... trigger: function( event, data, elem, onlyHandlers ) {...} ... } 

(这不是jQuery的公共接口,仅供内部使用。)

和用法:

 jQuery.fn.extend({ ... trigger: function( type, data ) { return this.each(function() { jQuery.event.trigger( type, data, this ); }); }, triggerHandler: function( type, data ) { var elem = this[0]; if ( elem ) { return jQuery.event.trigger( type, data, elem, true ); } }, ... }); 

这是如何做:

 $(document).bind('test', function (e) { // handler code here... });