2013-03-03 34 views
5

当我用.trigger()触发粘贴事件时,随后捕获的粘贴事件没有.originalEvent属性。这是预期的行为?为什么?手动触发的粘贴事件没有.originalEvent属性?

见例子 - http://jsfiddle.net/2uxEr/

<textarea>Paste something here</textarea> 
<button>Click for fake trigger</button> 

$('textarea').on("paste", function(e){ 

    alert(e.hasOwnProperty("originalEvent")); 

}); 

$('button').click(function(){ 

    $('textarea').trigger("paste"); 

}); 

回答

2

jQuery的事件将不会有一个originalEvent财产,如果他们被手动触发。他们怎么可能? originalEvent是由jQuery形成其事件对象的浏览器创建的事件对象;在手动触发的事件中,jQuery创建了事件对象本身。没有originalEvent访问。

This jsFiddle example显示事件如click以及paste这是如此。

+0

jQuery不会触发本机事件?它是如何工作的呢? – HyShai 2013-03-03 16:21:13

+0

@HyShai它[添加一个事件监听器](https://github.com/jquery/jquery/blob/master/src/event.js#L104),以便捕获浏览器的本地事件。 jQuery然后增强这个对象来添加特性和可用性,并将它传递给你的代码。 – lonesomeday 2013-03-03 16:23:00

+0

我的意思是.trigger()方法。它如何触发事件?引发的事件也被香草JS认可。 – HyShai 2013-03-03 16:24:35