如何捕获 jQuery.event.trigger()
How to catch the jQuery.event.trigger()?
我想用jQuery构建一个未设置为DOM元素的自定义事件。
它在jQuery描述中说:
jQuery.event.trigger('test');
是触发自定义事件。
但是我怎么能抓住它呢?
提前感谢
我想
您正在询问该自定义事件(至少对我来说试图捕获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...
});
相关文章:
- issue with FB.Event.subscribe
- Angularjs :$routeChangeStart event
- event.prventDefault()持续多久
- 为什么要从focus()更改为trigger('focus')
- <text区域>在我的html中包含event.keycode==13之后,wrap就不起作用了
- KeyDown event for CKeditor
- Javascript events: window.event vs argument reference (funct
- 动态填充Bootstrap选择选择器:change event dos'不起作用
- <td> focusin event .addclass
- Trigger.io Collaboration
- event.preventDefault阻止ajax调用
- 如何捕获 jQuery.event.trigger()
- Javascript/Jquery on event trigger <div class=>
- $.fn.submit() event don't trigger inside an <iframe&g
- FB.Event.subscribe('auth.login') won't trigger e
- JQuery .trigger click event在IE下不工作
- Backbone.js : select option change event trigger click event
- 单个事件上的多个事件处理程序.Trigger或event.delegate
- 如何使用map.getCenter()和google.maps.event.trigger()
- 当地图重新加载时,Google.maps.event.trigger不会运行