виджет 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 виджет или передать его различные варианты.
подробнее о каждом этапе здесь.