我虽然可以在文档上收听所有事件,但是代码不能正常工作。我在这里做错了吗?
$(document).on('test', function() {
console.log('document is listening for test event');
});
然后从对象中触发测试事件:
var obj = {};
$(obj).trigger('test'); //nothing happens, why?
上面的代码不应该与document
上的测试事件相关联的fire函数?
答案 0 :(得分:4)
首先,你所拥有的不是事件委托,这只是绑定到document
的常规事件。为了触发某事件(例如文档)的事件处理程序,必须在该元素上触发该事件 - 通过直接在该元素上触发它或通过触发在DOM上传播(“气泡”)的事件那个元素。
您的示例无效,因为您的对象obj
不属于document
,因此永远不会在文档上触发test
事件。
答案 1 :(得分:1)
这将触发您的活动:
$(document).trigger('test');
或document
的任何孩子:
$('body').trigger('test');
您的空对象obj
不是document
或document
的孩子,因此不会触发document
上绑定的事件