我想用未设置为DOM元素的jQuery构建自定义事件。如何捕捉jQuery.event.trigger()?
它说,在jQuery的描述,即:
jQuery.event.trigger('test');
是触发自定义事件。
但我怎么能抓住它?
提前THX
我想用未设置为DOM元素的jQuery构建自定义事件。如何捕捉jQuery.event.trigger()?
它说,在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(),像这样:
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...
});
想你们AR呃错过了这个问题。他并不是问你如何倾听对象上触发的事件。他问你如何监听通过jQuery.event.trigger()直接触发的事件。
我在http://www.sitepoint.com/jquery-custom-events/发现了一篇非常棒的文章。
本质上,你只是听文件对象。
$(document).on("test", function(event, data) {
console.log(data)
});
$.event.trigger('test', [{ foo: 'bar' }]);
您的意思是捕获'触发器'或该自定义事件? – raina77ow
是否这样? http://jsfiddle.net/6bWJ6/ – Blender
我的意思是自定义事件(对不起,如果我表达自己错了).. – Moszeed