2013-03-03 32 views
5

Khi tôi kích hoạt sự kiện dán bằng .trigger(), sự kiện dán đã chụp tiếp theo không có thuộc tính .originalEvent. Đây có phải là hành vi mong đợi không? Tại sao?Sự kiện dán được kích hoạt theo cách thủ công không có thuộc tính .originalEvent?

Xem ví dụ - 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"); 

}); 

Trả lời

2

jQuery sự kiện sẽ không có một tài sản originalEvent nếu họ được kích hoạt bằng tay. Làm sao họ có thể? originalEvent là đối tượng sự kiện được tạo bởi trình duyệt mà từ đó jQuery đã tạo thành đối tượng sự kiện của nó; trong một sự kiện được kích hoạt thủ công, jQuery đã tạo chính đối tượng sự kiện đó. Không có originalEvent để truy cập.

This jsFiddle example cho biết điều này đúng với các sự kiện như click cũng như paste.

+0

jQuery không kích hoạt sự kiện gốc? Làm thế nào nó hoạt động sau đó? – HyShai

+0

@HyShai Nó [thêm người nghe sự kiện] (https://github.com/jquery/jquery/blob/master/src/event.js#L104) để sự kiện gốc của trình duyệt bị bắt. jQuery sau đó tăng cường đối tượng này để thêm các tính năng và khả năng sử dụng và chuyển nó vào mã của bạn. – lonesomeday

+0

Tôi có nghĩa là phương thức .trigger(). Nó kích hoạt sự kiện như thế nào? Sự kiện thats được kích hoạt cũng được công nhận bởi vanilla JS. – HyShai

Các vấn đề liên quan