Đây là những gì tôi đã kết thúc làm.
Đó là một sự kết hợp của giải pháp Juan Mendes, và sử dụng một method from the prototype library
Nguyên, đã có một chức năng mà chạy mã này:
myObject.adjustSection(section) {
jQuery(document).trigger('section:' + section);
}
// I couldn't edit this function
Vì vậy, tôi mở rộng chức năng với phương pháp nguyên mẫu của wrap
, vì tôi dự án được sử dụng nguyên mẫu cũng như jQuery.
// My custom function wrapper
// extend adjustSection to include new event trigger
myObject.prototype.adjustSection = myObject.prototype.adjustSection.wrap(
function(parentFunction, section) {
// call original function
parentFunction(section);
// fire event w/section info
jQuery(document).trigger({
type: 'adjustSection',
section: section
});
}
);
Sau đó, nó chạy bản gốc, nhưng cũng kích hoạt sự kiện tùy chỉnh của tôi bao gồm thông tin phần.
Bây giờ, tôi có thể làm điều này để quan sát sự kiện đó và nhận được các loại phần:
jQuery(document).on('adjustSection', function(event) {
event.section; // contains the section I need
});
Tất nhiên, điều này có nghĩa là tôi phải sử dụng cả hai nguyên mẫu và jquery trong phạm vi tương tự, mà không phải là điều tốt nhất trên thế giới. Nhưng nó hoạt động.
Nguồn
2014-12-15 18:44:11
Bạn không thể! "trigger" của jQuery không lưu trữ các sự kiện ở bất cứ đâu, điều đó thường xảy ra khi các trình xử lý sự kiện bị ràng buộc, vì vậy nếu nó ở nơi khác, bạn có thể làm điều đó. Tất nhiên bất cứ điều gì là có thể, bạn có thể phân tích tất cả javascript và tìm kiếm các cuộc gọi để 'kích hoạt', nhưng đó chỉ là sai. – adeneo
Tôi nghĩ bạn không may mắn, đó là những sự kiện cơ bản khác nhau ... Phần năng động của sự kiện đó phải là một cuộc tranh luận cho sự kiện. 'jQuery (document) .trigger ('section', section);' Bạn không có cách nào để biết tất cả các phần hợp lệ là gì? Nếu vậy, bạn có thể làm '$(). Trên ('phần: phần trên cùng: phần dưới cùng: phần bên phải: bên trái')' –
http://stackoverflow.com/questions/26225987/one-listener-for-all- event-in-jquery-event-namespace/26227362 # 26227362 – guest271314