Покритикуйте реализацию паттерна наблюдатель на jQuery
//Трансляция глобальных событий подписчикам $.fn.obs = function (eventList) { return this.each(function () { for (event in eventList) { if (eventList[event] !== null) { $(document).on(event, jQuery.proxy(eventList[event], this)) } else { $(document).off(event, jQuery.proxy(eventList[event], this)) } } }) } //Вызов события $(document).trigger('event1', data) //Подписка на события $('#object').obs({ 'event1': function (e, data) { //function 1 }, 'event2': function (e, data) { //function 2 } }) Тут, конечно, проблема с отпиской от событий, пока не знаю как решить |
Я так понимаю это тоже что и
$(document).on('event1', (function(e, data) { //function 1 }).bind($('#object'))); $(document).on('event2', (function(e, data) { //function 2 }).bind($('#object'))); просто удобнее? |
Не очень понял способ... И зачем bind, он же depricated?
Тут смысл в том, чтобы поместить обработчики в тот объект к которому они относятся. Тогда уж так: $('#object').each(function () { $('document').on({ 'event1': function (e, data) { //function 1 }, 'event2': function (e, data) { //function 2 } }) }) Правда кода в слушателе стало больше. И как удалить такой обработчик? $('document').off(event1, event1) |
Цитата:
Ну тогда так: $(document).on({ event1: (function(e, data) { //function 1 }).bind($('#object')), event2: (function(e, data) { //function 2 }).bind($('#object')) }); |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 07:55. |