При написании виджетов для jQuery UI важно не забыть объявить метод, который возвращает какие-то данные (getter). По умолчанию фабрика виджетов вернет ссылку на корневой элемент, чтобы обеспечить цепочечные вызовы.
Пусть у нас есть метод getFields, который должен вернуть коллекцию элементов, которые использует виджет.
$.widget("foo.bar", {
…
getFields: function () {
var fields = [];
$.each(this._fields, function () {
fields.push(this.element);
});
return $(fields);
}
});
Пока мы не сделаем такое объявление, метод будет возвращать не то, что мы ожидаем.
$.extend($.foo.bar, {
getter: "getFields",
defaults: {}
});
Если у виджета несколько таких методов, то их имена при описании разделяются пробелом.
Обновление: В jQuery UI 1.8 изменилась политика в отношении таких методов. Теперь не нужно специально объявлять их. Когда метод возвращает значение undefined, оно заменяется на корневой элемент экземпляра виджета, что позволяет строить вызовы цепочкой. В любом другом случае это значение передается без изменений.