Покритикуйте реализацию паттерна наблюдатель на 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, время: 04:03. |