Page 115 - jQuery для начинающих
P. 115
Поясню для тех кто не прочёл комментарии:
options – хранилище настроек виджета для конкретного элемента
_create() – отвечает за инициализацию виджета – тут должны происходить
изменения в DOM'е, и «вешаться» обработчики событий
_destroy() – антипод для _create() – должен подчистить всё, что мы намусорили
_setOption(key, value) – данный метод будет вызван при попытке изменить
какие-либо настройки:
$("#my").expose({key:value})
Наблюдательный глаз заметит, что все перечисленные методы начинаются со
знака подчёркивания – это такой способ выделить «приватные» методы,
которые недоступны для запуска, и если мы попытаемся запустить
$('#my').expose('_destroy'), то получим ошибку. Но учтите – это лишь
договорённость, соблюдайте, её!
Для обхода договорённости о приватности можно использовать метод data():
$("#my").data("expose")._destroy() // место для смайла «(devil)»
В данном примере, я постарался задать хороший тон написания виджетов – я «повесил»
обработчики событий в namespace, это даст в дальнейшем возможность контролировать
происходящее без необходимости залазить в код виджета, это «true story».
Код описанный в методе _destroy() – избыточен, т.к. он и так выполняется в
публичном destroy(), приведён тут для наглядности.
А для ленивых, чтобы не прописывать каждый раз eventNamespace в обработчиках
событий, разработчики добавили в версии 1.9.0 два метода: _on() и _off(), первый
принимает два параметра:
— DOM элемент, или селектор, или jQuery объект
— набор обработчиков событий в виде объекта
Все перечисленные события будут «висеть» в пространстве eventNamespace, т.е. результат
будет предположительно одинаковым:
this._on(this.element, {
mouseover:function(event) {
console.log("Hello mouse");
},
mouseout:function(event) {
console.log("Bye mouse");
}
});
115
www.trk.kg