2

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

这个问题与这个有关如何避免在这种情况下修改事件对象

任何想法为什么当我在键盘上键入一个键时我得到newEvent.keyCode未定义的值?

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

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

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

2 回答 2

2

来自jQuery API 手册

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

所以你可以尝试var newEvent = $.Event('keydown', event),但据我所知,这只会创建原始事件对象的浅表副本。

或者,只需复制您需要的属性:

var newEvent = $.Event("keydown", {
    keyCode:  event.keyCode
});

除非您这样做,否则您的事件对象将根本没有有用的属性。

于 2012-08-21T12:49:00.593 回答
1

http://jsfiddle.net/uymYJ/21/

var e = $.Event('keydown', en);

这会产生您(真的?)想要的效果;)

于 2012-08-21T12:52:19.670 回答