виджет jQuery, создание или инициализация

некоторые jQuery плагин расширить виджет использовать _create метод, в то время как другие используют _init метод, может кто-то объяснить различия между ними?

также любое руководство о том, когда лучше расширить виджет или напрямую расширить jquery.ФН?

3 ответов


недостаток расширения виджета (в отличие от $.fn) заключается в том, что вы создаете зависимость от jQuery-ui, которая определяет виджет "класс". Эта зависимость может быть дорогостоящей для пользователей вашего плагина, которые также не используют jQuery-ui.

Что касается _create vs _init, я уверен, что _init пришел первым, а затем в недавней редакции они представили и поддержали _create. Возможно, я ошибаюсь, но я считаю, что _init по-прежнему поддерживается. Если это так, то не должно быть любые различия между ними.


с руководство разработчика jQuery UI:

после создания элемента все остальные вызовы имени виджета, где первый параметр не является строкой, вызовут метод _init (); если параметры переданы, то .метод option () будет вызываться перед методом _init ()


виджет имеет три этапа:

+-------+----------------+---------------+--------------------------------------------------------------------------------------------+
| Phase | Name           | jQuery Method | Description                                         |  
+-------+----------------+---------------+--------------------------------------------------------------------------------------------+
|     1 | Creation       | _create       | First time the widget is applied to an element, it is called.                              |  
|     2 | Initialization | _int          | The _init method is called after _create when the widget is first applied to its elements. |  
|     3 | Destruction    | destroy       | The widget's destroy method is used to detach a widget from an element.                    |  
+-------+----------------+---------------+--------------------------------------------------------------------------------------------+

Примечание: имена методов, начинающиеся с подчеркивания, должны быть частными по соглашению.


таким образом, есть разница между _create и _init. Один используется для создания, а другой-для инициализации. Каждый раз, когда вы вызываете виджет без аргументов или с опциями, он будет косвенно вызывать _init метод. Поэтому это можно использовать для сброс (повторная инициализация) a виджет или передать его различные варианты.

подробнее о каждом этапе здесь.