-1

我虽然可以收听文档上的所有事件,但以下代码不起作用。我在这里做错什么了吗?

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

然后从对象触发测试事件:

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

上面的代码不应该触发与测试事件相关联的函数document吗?

4

2 回答 2

4

首先,您拥有的不是事件委托,而是绑定到document. 为了触发某事物(例如文档)上的事件处理程序,必须在该元素上触发该事件 - 通过直接在该元素上触发它或通过触发在 DOM 上传播(“气泡”)的事件到那个元素。

您的示例不起作用,因为您的对象obj不是 的一部分document,因此该test事件永远不会在文档上触发。

于 2013-10-09T15:13:13.573 回答
1

这将触发您的事件:

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

或任何孩子document

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

您的空对象obj不是document,或者它的子对象document不会触发绑定的事件document

于 2013-10-09T15:12:45.123 回答