事件委托 - jQuery

时间:2013-10-09 15:08:53

标签: javascript jquery

我虽然可以在文档上收听所有事件,但是代码不能正常工作。我在这里做错了吗?

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

您的示例无效,因为您的对象obj不属于document,因此永远不会在文档上触发test事件。

答案 1 :(得分:1)

这将触发您的活动:

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

document的任何孩子:

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

您的空对象obj不是documentdocument的孩子,因此不会触发document上绑定的事件