9

一些jquery插件扩展小部件使用_create方法,而另一些使用_init方法,有人可以解释两者之间的区别吗?

还有关于何时扩展小部件或直接扩展 jquery.fn 更好的任何指导?

4

3 回答 3

18

来自jQuery UI 开发人员指南

创建元素后,对第一个参数不是字符串的小部件名称的所有其他调用都将调用 _init() 方法;如果传递了选项,则 .option() 方法将在 _init() 方法之前调用

于 2010-10-21T02:11:34.897 回答
4

扩展小部件(与 $.fn 相对)的缺点是您创建了对定义小部件“类”的 jquery-ui 的依赖项。对于不使用 jquery-ui 的插件用户来说,这种依赖可能会很昂贵。

就 _create 与 _init 而言,我很确定 _init 是最先出现的,然后在他们引入的最新版本中并支持 _create。我可能对此有误,但我相信 _init 仍然受支持。如果是,那么两者之间应该没有任何区别。

于 2010-10-20T22:49:33.037 回答
3

小部件具有三个阶段:

+-------+----------------+---------------+--------------------------------------------------------------------------------------------+
| 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方法。因此,这可用于重置(重新初始化)小部件或传递不同的选项。

有关每个阶段的更多详细信息,请点击此处

于 2017-03-14T22:46:59.217 回答