我正在尝试创建自定义javascript事件。该事件正常工作并触发,但我传递的“详细信息”对象不可用。
这是我用来创建和发送事件的代码;
var double_tap = new CustomEvent("doubleTap", {
detail: {
hello: 'world'
},
bubbles: true,
cancelable: true
});
this.dispatchEvent(double_tap);
然后我使用jquery向主体添加事件监听器;
$('body').on('doubleTap', function( e ) {
console.log(e);
});
它触发,控制台日志发生,但不幸的是,日志只输出事件详细信息,包括气泡和可取消属性,但从不输出'detail'对象,因此无法访问信息。
这是一个jsbin例子,我在body的click事件上创建事件,这样你就可以看到控制台; http://jsbin.com/looseroots/6
我希望能够在触发事件时从'detail'对象获取数据。我究竟做错了什么?我在Chrome和iOS上的Safari上测试了这个
答案 0 :(得分:9)
您需要访问originalEvent属性以获取详细信息
console.log(e.originalEvent.detail);
答案 1 :(得分:7)
obj.addEventListener("eventName", function(e) {
console.log(e.your_property)
})
var event = new CustomEvent("eventName");
event.your_property = { key: "value" };
obj.dispatchEvent(event);
您可以在发送时在CustomEvent中创建属性。
答案 2 :(得分:1)
我找到了以下提交:https://github.com/jquery/jquery/commit/a90ff8c8c79bfcc32afd340a12f016f20a31d8b6
此修复程序位于jQuery的compat
分支中,应该从jQuery 3.0开始修复。