SlideShare a Scribd company logo
1 of 26
Возьми больше от jQuery


Post JScriptum
Agenda

— Это всего лишь javaScript
— Почему jQuery?
— Приимущества jQuery Widget factory
— Обзор инфраструктуры jQuery Widget
  Factory
Это всего лишь JavaScript

— “Там нечего писать”
— “Элементарщина”
— “Придаток к серверной части”
— “Как два пальца”
Вот блин...

— Слишком много зависимостей
— Не оптимальные решения
— Большое количество кода
— Повторяющийся код
Почему jQuery?
Widget Factory
DOM-element
    +
  Widget
    =
Компонента
it's alive!!!
Translate Inline

или как нам удалось уменьшить количество кода
на 30%, значительно расширив функциональность
и увеличив производительность...
1. Количество кода стало меньше на 30%

До рефакторинга             После рефакторинга




Количество строк - 209       Количество строк - 133
Вес файла – 7.3 Кб           Вес файла – 5.1 Кб
2. Улучшенная архитектура



                  Edit Trigger

                       +
                Translate Inline

                       +
                     Dialog
3. Конфигурация
1.$.widget("mage.translateInline", {
2.     options: {
3.         translateForm: {
4.             template: /* template */,
5.             data: {
6.                  id: 'translate-inline-form',
7.                  message: 'Please refresh the page.'
8.             }
9.         },
10.        dialog: {
11.              modal: true,
12.              dialogClass: "dialog",
13.              width: 650,
14.              title: 'Translate',
15.              height: 470,
16.              zIndex: 2100,
17.        }
18.    },
19.    /* Widget methods */
20.});
4. Кастомизация
1.$(document).translateInline({
2.     display: 'inline',
3.     translateForm: {
4.         template: /* new template */
5.     },
6.     editTrigger: {
7.         template: /* new template */,
8.         alt:'Translate',
9.         offsetTop:0
10.    },
11.    dialog: {
12.         modal:false,
13.         width: 320,
14.         height: 170,
15.         id: 'translate-dialog'
16.    }
17.});
5. Коммуникация между компонентами

         dialog
         Translate Inline

                          edit event
                          edit event



           Text for translate
           Edit Trigger




1._onClick: function(e) {
1.this.element
2.    e.stopImmediatePropagation();
      .on('edit.editTrigger', $.proxy(this._onEdit, this));
3.    $(this.currentTarget).trigger('edit.' + this.widgetName);
4.},
6. Неожиданный бонус.




$(‘#statistic-area').translateInline();
Дополнительные
преимущества
— Наследование и полиморфизм
— Конструктор/Деструктор
— Псевдоселектор
— Private и Public методы
— Механизм колбэков
Нет Велосипедам!
I WANT YOU TO USE
JQUERY WIDGET FACTORY
Ресурсы
•   http://wiki.jqueryui.com/w/page/12138135/Widget%20factory
•   http://ajpiano.com/widgetfactory/
•   http://bililite.com/blog/understanding-jquery-ui-widgets-a-tutorial/
•   http://www.erichynds.com/jquery/tips-for-developing-jquery-ui-widgets/
•   http://net.tutsplus.com/tutorials/javascript-ajax/coding-your-first-jquery-ui-
    plugin/
1. Декларация
$.widget('component.menu', {
    options: {
        type: 'horisontal',
        …
    },
    _create: function(){…},
    …
});


2. Инициализация
$('#menu-id').menu();


3. Кастомизация
$('#menu-id').menu({
    type: 'vertical',
    show: function(el){el.faneIn(100);}
});
4. this.element
$.widget('component.menu', {
    _create: function(){
        this.element.on('click', function(){...});
    },
    …
});


5. private/public методы
$('#menu-id').menu('show', 'slow');
$('#menu-id').menu('_render');


6. Cоздание нескольких инстансов одновременно
7. Автоматический вызов метода “_create”,
“_init”
$('#menu-id').menu(); //Отработает _create и _init
$('#menu-id').menu(); //Отработает только _init
8. Метод “destroy”
9. disable/enable
10. Псевдоселектор
$(‘:component-menu');


11. Наследование/Полиморфизм
$.widget('my.dialog', $.ui.dialog.prototype, {
    open: function(){
        /*Your code here*/
        $.ui.dialog.prototype.show.apply(this, arguments);
    }
});

12. Механизм колбэков _trigger
13. Мгновенное реагирование на изменение опций
$.widget('my.dialog', $.ui.dialog.prototype, {
      _setOption: function(key, value) {
          var oldValue = this.options[key];
          if (key == "className") {
              this.element.toggleClass(oldValue + " " + value);
          }
          // Вызов базового метода _setOption
          $.Widget.prototype._setOption.apply(this, arguments);
    }
});

$('#dialog-id').dialog('option', 'className', 'white');

More Related Content

What's hot

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
Making Scalable JavaScript Application
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript ApplicationMikhail Davydov
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4Technopark
 
11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБДRoman Brovko
 
I tmozg js_school_jquery
I tmozg js_school_jqueryI tmozg js_school_jquery
I tmozg js_school_jqueryITmozg
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииPaul Klimov
 
Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Paul Klimov
 
'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020
'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020
'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020OdessaJS Conf
 
Пластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьПластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьMoscow.pm
 
Мульти-доменность в Django проекте
Мульти-доменность в Django проектеМульти-доменность в Django проекте
Мульти-доменность в Django проектеAlexey Kinyov
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressRuslan Begaliev
 
13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данныхRoman Brovko
 
Gennady kovshenin-wcrus2015-2
Gennady kovshenin-wcrus2015-2Gennady kovshenin-wcrus2015-2
Gennady kovshenin-wcrus2015-2Gennady Kovshenin
 
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) COMAQA.BY
 

What's hot (19)

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Making Scalable JavaScript Application
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript Application
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4
 
11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД11 - Web-технологии. Работа с СУБД
11 - Web-технологии. Работа с СУБД
 
course js day 4
course js day 4course js day 4
course js day 4
 
I tmozg js_school_jquery
I tmozg js_school_jqueryI tmozg js_school_jquery
I tmozg js_school_jquery
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляции
 
Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2
 
'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020
'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020
'The best practices' by KONSTANTIN KULAKSYZ at OdessaJS'2020
 
Почему Mojolicious?
Почему Mojolicious?Почему Mojolicious?
Почему Mojolicious?
 
Пластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьПластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать жить
 
Что нового в Django 1.4
Что нового в Django 1.4Что нового в Django 1.4
Что нового в Django 1.4
 
Crazy owl yii1=> yii2
Crazy owl yii1=> yii2Crazy owl yii1=> yii2
Crazy owl yii1=> yii2
 
Мульти-доменность в Django проекте
Мульти-доменность в Django проектеМульти-доменность в Django проекте
Мульти-доменность в Django проекте
 
Static Sites Generation
Static Sites GenerationStatic Sites Generation
Static Sites Generation
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
 
13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных13 - Web-технологии. Отображение данных
13 - Web-технологии. Отображение данных
 
Gennady kovshenin-wcrus2015-2
Gennady kovshenin-wcrus2015-2Gennady kovshenin-wcrus2015-2
Gennady kovshenin-wcrus2015-2
 
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
 

Viewers also liked

DevHub 3 - Pricing
DevHub 3 - PricingDevHub 3 - Pricing
DevHub 3 - PricingMagento Dev
 
Magento 2 Page Cache
Magento 2 Page CacheMagento 2 Page Cache
Magento 2 Page CacheMagento Dev
 
Choreography of web-services
Choreography of web-servicesChoreography of web-services
Choreography of web-servicesMagento Dev
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoMagento Dev
 

Viewers also liked (8)

Tdd php
Tdd phpTdd php
Tdd php
 
DevHub 3 - Pricing
DevHub 3 - PricingDevHub 3 - Pricing
DevHub 3 - Pricing
 
Magento 2 Page Cache
Magento 2 Page CacheMagento 2 Page Cache
Magento 2 Page Cache
 
Choreography of web-services
Choreography of web-servicesChoreography of web-services
Choreography of web-services
 
Security in PHP
Security in PHPSecurity in PHP
Security in PHP
 
DevHub 3 - CVS
DevHub 3 - CVSDevHub 3 - CVS
DevHub 3 - CVS
 
Magento devhub
Magento devhubMagento devhub
Magento devhub
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
 

Similar to Take more from Jquery

Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаprivate_face
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Ontico
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPAEugene Abrosimov
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаprivate_face
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4Technopark
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...Yandex
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
 
Web весна 2012 лекция 4
Web весна 2012 лекция 4Web весна 2012 лекция 4
Web весна 2012 лекция 4Technopark
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java scriptNoveo
 
MyBatis на практике
MyBatis на практикеMyBatis на практике
MyBatis на практикеVitebsk Miniq
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11dva
 
FPUG Dzyga presentation
FPUG Dzyga presentationFPUG Dzyga presentation
FPUG Dzyga presentationIvan Filimonov
 

Similar to Take more from Jquery (20)

Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPA
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кода
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
 
Js fuckworks
Js fuckworksJs fuckworks
Js fuckworks
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Web весна 2012 лекция 4
Web весна 2012 лекция 4Web весна 2012 лекция 4
Web весна 2012 лекция 4
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java script
 
Zend Framework и Doctrine
Zend Framework и DoctrineZend Framework и Doctrine
Zend Framework и Doctrine
 
MyBatis на практике
MyBatis на практикеMyBatis на практике
MyBatis на практике
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
My batis
My batisMy batis
My batis
 
django cheBit'11
django cheBit'11django cheBit'11
django cheBit'11
 
FPUG Dzyga presentation
FPUG Dzyga presentationFPUG Dzyga presentation
FPUG Dzyga presentation
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 

More from Magento Dev

Yurii Hryhoriev "Php storm tips&tricks"
Yurii Hryhoriev "Php storm tips&tricks"Yurii Hryhoriev "Php storm tips&tricks"
Yurii Hryhoriev "Php storm tips&tricks"Magento Dev
 
Magento2 airplane
Magento2 airplaneMagento2 airplane
Magento2 airplaneMagento Dev
 
Imagine recap-devhub
Imagine recap-devhubImagine recap-devhub
Imagine recap-devhubMagento Dev
 
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDEРазработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDEMagento Dev
 
Top 5 magento secure coding best practices Alex Zarichnyi
Top 5 magento secure coding best practices   Alex ZarichnyiTop 5 magento secure coding best practices   Alex Zarichnyi
Top 5 magento secure coding best practices Alex ZarichnyiMagento Dev
 
Data migration into eav model
Data migration into eav modelData migration into eav model
Data migration into eav modelMagento Dev
 
Gearman jobqueue
Gearman jobqueueGearman jobqueue
Gearman jobqueueMagento Dev
 

More from Magento Dev (9)

Yurii Hryhoriev "Php storm tips&tricks"
Yurii Hryhoriev "Php storm tips&tricks"Yurii Hryhoriev "Php storm tips&tricks"
Yurii Hryhoriev "Php storm tips&tricks"
 
Magento2 airplane
Magento2 airplaneMagento2 airplane
Magento2 airplane
 
Imagine recap-devhub
Imagine recap-devhubImagine recap-devhub
Imagine recap-devhub
 
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDEРазработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
 
Top 5 magento secure coding best practices Alex Zarichnyi
Top 5 magento secure coding best practices   Alex ZarichnyiTop 5 magento secure coding best practices   Alex Zarichnyi
Top 5 magento secure coding best practices Alex Zarichnyi
 
Data migration into eav model
Data migration into eav modelData migration into eav model
Data migration into eav model
 
Php + erlang
Php + erlangPhp + erlang
Php + erlang
 
Gearman jobqueue
Gearman jobqueueGearman jobqueue
Gearman jobqueue
 
Autotest
AutotestAutotest
Autotest
 

Take more from Jquery

  • 1. Возьми больше от jQuery Post JScriptum
  • 2. Agenda — Это всего лишь javaScript — Почему jQuery? — Приимущества jQuery Widget factory — Обзор инфраструктуры jQuery Widget Factory
  • 3. Это всего лишь JavaScript — “Там нечего писать” — “Элементарщина” — “Придаток к серверной части” — “Как два пальца”
  • 4. Вот блин... — Слишком много зависимостей — Не оптимальные решения — Большое количество кода — Повторяющийся код
  • 7. DOM-element + Widget = Компонента
  • 9. Translate Inline или как нам удалось уменьшить количество кода на 30%, значительно расширив функциональность и увеличив производительность...
  • 10.
  • 11. 1. Количество кода стало меньше на 30% До рефакторинга После рефакторинга Количество строк - 209 Количество строк - 133 Вес файла – 7.3 Кб Вес файла – 5.1 Кб
  • 12. 2. Улучшенная архитектура Edit Trigger + Translate Inline + Dialog
  • 13. 3. Конфигурация 1.$.widget("mage.translateInline", { 2. options: { 3. translateForm: { 4. template: /* template */, 5. data: { 6. id: 'translate-inline-form', 7. message: 'Please refresh the page.' 8. } 9. }, 10. dialog: { 11. modal: true, 12. dialogClass: "dialog", 13. width: 650, 14. title: 'Translate', 15. height: 470, 16. zIndex: 2100, 17. } 18. }, 19. /* Widget methods */ 20.});
  • 14.
  • 15. 4. Кастомизация 1.$(document).translateInline({ 2. display: 'inline', 3. translateForm: { 4. template: /* new template */ 5. }, 6. editTrigger: { 7. template: /* new template */, 8. alt:'Translate', 9. offsetTop:0 10. }, 11. dialog: { 12. modal:false, 13. width: 320, 14. height: 170, 15. id: 'translate-dialog' 16. } 17.});
  • 16.
  • 17. 5. Коммуникация между компонентами dialog Translate Inline edit event edit event Text for translate Edit Trigger 1._onClick: function(e) { 1.this.element 2. e.stopImmediatePropagation(); .on('edit.editTrigger', $.proxy(this._onEdit, this)); 3. $(this.currentTarget).trigger('edit.' + this.widgetName); 4.},
  • 19. Дополнительные преимущества — Наследование и полиморфизм — Конструктор/Деструктор — Псевдоселектор — Private и Public методы — Механизм колбэков
  • 21. I WANT YOU TO USE JQUERY WIDGET FACTORY
  • 22. Ресурсы • http://wiki.jqueryui.com/w/page/12138135/Widget%20factory • http://ajpiano.com/widgetfactory/ • http://bililite.com/blog/understanding-jquery-ui-widgets-a-tutorial/ • http://www.erichynds.com/jquery/tips-for-developing-jquery-ui-widgets/ • http://net.tutsplus.com/tutorials/javascript-ajax/coding-your-first-jquery-ui- plugin/
  • 23. 1. Декларация $.widget('component.menu', { options: { type: 'horisontal', … }, _create: function(){…}, … }); 2. Инициализация $('#menu-id').menu(); 3. Кастомизация $('#menu-id').menu({ type: 'vertical', show: function(el){el.faneIn(100);} });
  • 24. 4. this.element $.widget('component.menu', { _create: function(){ this.element.on('click', function(){...}); }, … }); 5. private/public методы $('#menu-id').menu('show', 'slow'); $('#menu-id').menu('_render'); 6. Cоздание нескольких инстансов одновременно 7. Автоматический вызов метода “_create”, “_init” $('#menu-id').menu(); //Отработает _create и _init $('#menu-id').menu(); //Отработает только _init
  • 25. 8. Метод “destroy” 9. disable/enable 10. Псевдоселектор $(‘:component-menu'); 11. Наследование/Полиморфизм $.widget('my.dialog', $.ui.dialog.prototype, { open: function(){ /*Your code here*/ $.ui.dialog.prototype.show.apply(this, arguments); } }); 12. Механизм колбэков _trigger
  • 26. 13. Мгновенное реагирование на изменение опций $.widget('my.dialog', $.ui.dialog.prototype, { _setOption: function(key, value) { var oldValue = this.options[key]; if (key == "className") { this.element.toggleClass(oldValue + " " + value); } // Вызов базового метода _setOption $.Widget.prototype._setOption.apply(this, arguments); } }); $('#dialog-id').dialog('option', 'className', 'white');