2013-10-09 55 views
-1

我虽然有可能听文档上的所有事件,但以下代码无法正常工作。我在这里做错了什么?事件代表团 - jQuery

$(document).on('test', function() { 
    console.log('document is listening for test event'); 
}); 

然后防火测试事件从一个对象:

var obj = {}; 
    $(obj).trigger('test'); //nothing happens, why? 

不应上述代码火功能相关联,以对测试document事件?

+9

'obj'不是文档的一部分。 – maketest

+1

那么浏览器里的一切都是窗口的小孩而不是文件? –

+0

@ user2855314 DOM不是ECMAScript的一部分。而'document'是一个Object,那么'Object'如何成为'document'的子元素呢? – iConnor

回答

4

首先,你有什么不是事件代表团,这只是一个定期事件绑定到document。为了使事件处理程序(如文档)触发,必须在该元素上触发该事件 - 通过直接在该元素上触发该事件,或通过触发在DOM上传播(“泡泡”)的事件到那个元素。

您的示例不起作用,因为您的对象obj不是document的一部分,所以test事件从不在文档上触发。

1

这将触发你的事件:

$(document).trigger('test'); 

document任何子:

$('body').trigger('test'); 

你空对象obj不是documentdocument孩子这样将不会触发绑定在事件document