2011-11-11 25 views
7

jQuery có các chức năng như .on().trigger() cho phép bạn đính kèm sự kiện vào đối tượng DOM và sau đó kích hoạt các sự kiện đó theo cách thủ công. Tài liệu cho các hàm này đề cập cụ thể đến các sự kiện trên "các phần tử", mà tôi lấy để ngụ ý các phần tử HTML/DOM.Tôi có thể sử dụng các chức năng sự kiện của jQuery với các đối tượng cũ không?

Tôi cũng có thể sử dụng các chức năng này để thêm chức năng sự kiện vào các đối tượng JavaScript cũ thuần túy không?

var x = {}; 
$(x).on('bonk', function() { alert('Oif!'); }); 
$(x).trigger('bonk'); // shows the alert 

Điều này hoạt động trên tất cả các trình duyệt mà tôi đã thử nghiệm (Chrome 15, FireFox 7, IE 9 và Opera 11.52, tất cả trên Windows), có vẻ đầy hứa hẹn. Nhưng nó không rõ ràng từ tài liệu cho dù đó thực sự là có nghĩa là là một kịch bản được hỗ trợ, trong tất cả các trình duyệt, trên tất cả các nền tảng. Sự lựa chọn thuật ngữ của các tài liệu ("yếu tố") diễn ra rất nhiều nghi ngờ.

Các tài liệu làm nhà nước mà tôi có thể tạo nên tên sự kiện của riêng tôi (ví dụ, các trang doc cho .on() có một ví dụ để "Đính kèm và kích hoạt (không duyệt) sự kiện tùy chỉnh"). Nhưng vẫn còn, đó là luôn luôn gắn sự kiện vào một phần tử DOM, không phải là một đối tượng cũ đơn giản.

Có điều gì dứt khoát xác định liệu jQuery có hỗ trợ .on().trigger() với các đối tượng JavaScript cũ thuần túy không?

+0

gọn gàng. Đó là tất cả những gì tôi phải nói bây giờ. Tôi không biết câu trả lời, nhưng cảm ơn câu hỏi thú vị. –

+0

+1 Câu hỏi hay! – dSquared

+0

Tôi đã sử dụng phương pháp này với các đối tượng không phải DOM cho một ứng dụng MVC có sự kiện và dường như nó hoạt động trên nhiều trình duyệt (bao gồm cả IE8). Nhưng tôi không có tài liệu để sao lưu. – nrabinowitz

Trả lời

2

Nhìn vào mã nguồn tôi thấy một số gợi ý rằng nó có ý định nhưng sau đó tôi cũng thấy điều này:

Không có lý do cụ thể tại sao nó không phải tài liệu (trừ rằng nó khá phi truyền thống đối với hầu hết người sử dụng) - nhưng có, chúng tôi hỗ trợ nó và có các bài kiểm tra đơn vị cho nó.

http://forum.jquery.com/topic/triggering-custom-events-on-js-objects

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