Javascript 如何创建新事件

Javascript 如何创建新事件,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我想创建新事件(使用document.createEvent()或Jquery.Event+复制所有重要属性)并发送克隆以避免修改原始事件。 这是源代码 这个问题和这个有关 你知道为什么我在键盘上键入一个键时会得到newEvent.keyCode未定义的值吗 $("#box").keydown(function(event){ var newEvent = $.Event("keydown"); console.log(event.keyCode); // 68 c

我想创建新事件(使用document.createEvent()或Jquery.Event+复制所有重要属性)并发送克隆以避免修改原始事件。
这是源代码

这个问题和这个有关

你知道为什么我在键盘上键入一个键时会得到
newEvent.keyCode
未定义的值吗

$("#box").keydown(function(event){

    var newEvent = $.Event("keydown");

    console.log(event.keyCode); // 68 
    console.log(newEvent.keyCode); // undefined
});
从:

从jQuery 1.6开始,您还可以将对象传递给jQuery.Event(),其属性将在新创建的事件对象上设置

因此,您可以尝试
var newEvent=$.Event('keydown',Event)
,但据我所知,这只会创建原始事件对象的浅拷贝

或者,只需复制所需的属性:

var newEvent = $.Event("keydown", {
    keyCode:  event.keyCode
});
除非您这样做,否则事件对象上根本没有有用的属性。


这就是你(真的?)想要的效果;)

是什么让你认为
$.Event()
会复制现有事件?@Alnitak我也不明白。。
.clone()
函数不应该更合适吗?或者至少类似于
var newEvent=event
?@Luceos我原以为
.extend()
实际上-
.clone()
是用于DOM元素,而不是任意JS对象的。@Alnitak,没错是的。忘了。
var e = $.Event('keydown', en);