未传递Javascript CustomEvent详细信息
我正在尝试创建一个自定义Javascript事件。事件正常工作并激发,但我传递给它的“detail”对象不可用 下面是我用来创建和分派事件的代码:未传递Javascript CustomEvent详细信息,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,我正在尝试创建一个自定义Javascript事件。事件正常工作并激发,但我传递给它的“detail”对象不可用 下面是我用来创建和分派事件的代码: var double_tap = new CustomEvent("doubleTap", { detail: { hello: 'world' }, bubbles: true, cancelable: true }); this.dispatchEvent(double_t
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示例,我在主体的click事件上创建事件,以便您可以看到控制台
我希望能够在触发事件时从“detail”对象获取数据。我做错了什么?我已经在Chrome和iOS上的Safari中对此进行了测试。有关详细信息,您需要访问OriginaleEvent属性
console.log(e.originalEvent.detail);
我发现以下问题: 此修复位于jQuery的
compat
分支中,应该从jQuery 3.0开始修复
obj.addEventListener("eventName", function(e) {
console.log(e.your_property)
})
var event = new CustomEvent("eventName");
event.your_property = { key: "value" };
obj.dispatchEvent(event);
当您发送CustomEvent时,您可以在CustomEvent中创建属性。非常简单,但在我找到的解释CustomEvent方法的文档中,没有一个指出这一点。非常感谢。这实际上不是CustomEvent问题,我相信jQuery会将DOM事件包装到自己的事件对象中。。(我不是jQuery专家,所以我可能错了)如果希望将所有代码都保存在jQuery领域中,还可以向jQuery处理程序添加数据参数<代码>$('body')。关于('doubleTap',函数(e,arg1,arg2)很有趣,谢谢。我不会使用jQuery。我只是出于测试的方便而使用它。element.addEventListener会做得很好!有用的信息!谢谢!我浪费了3个小时处理这个问题!这是金子!:-)太好了!它正在工作。但我不知道为什么event.detail不起作用,也就是说,当我们详细地传递对象时,在侦听器中找不到它。