Вам, вероятно, не нужен плагин для этого. Прежде всего, сам DOM полностью ориентирован на события. Вы можете использовать делегирование событий для прослушивания всех событий на корневом узле (метод, который использует jQuery live). Также для обработки пользовательских событий, которые могут не иметь отношения к DOM, вы можете использовать обычный старый объект JavaScript для выполнения этой работы. Я написал сообщение в блоге о создании центрального диспетчера событий в MooTools с помощью всего одной строки кода.
var EventBus = new Class({Implements: Events});
Это также легко сделать в jQuery. Используйте обычный объект JavaScript, который действует как центральный посредник для всех событий. Любой клиентский объект может публиковать и подписываться на события этого объекта. См. Этот связанный вопрос .
var EventManager = {
subscribe: function(event, fn) {
$(this).bind(event, fn);
},
unsubscribe: function(event, fn) {
$(this).unbind(event, fn);
},
publish: function(event) {
$(this).trigger(event);
}
};
// Your code can publish and subscribe to events as:
EventManager.subscribe("tabClicked", function() {
// do something
});
EventManager.publish("tabClicked");
EventManager.unsubscribe("tabClicked");
<ч />
Или, если вас не интересует раскрытие jQuery, просто используйте пустой объект и вызовите bind
и trigger
непосредственно для обернутого объекта jQuery.
var EventManager = {};
$(EventManager).bind("tabClicked", function() {
// do something
});
$(EventManager).trigger("tabClicked");
$(EventManager).unbind("tabClicked");
Оболочки просто для того, чтобы скрыть базовую библиотеку jQuery, чтобы вы могли заменить реализацию позже, если потребуется.
Это, в основном, публикация / подписка или шаблон наблюдателя , и несколько хороших примеров - класс NSNotificationCenter , EventBus шаблон, популяризированный Рэем Райаном в сообществе GWT и несколькими другими.