2013-03-03 68 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