一些jquery插件扩展小部件使用_create方法,而另一些使用_init方法,有人可以解释两者之间的区别吗?
还有关于何时扩展小部件或直接扩展 jquery.fn 更好的任何指导?
一些jquery插件扩展小部件使用_create方法,而另一些使用_init方法,有人可以解释两者之间的区别吗?
还有关于何时扩展小部件或直接扩展 jquery.fn 更好的任何指导?
创建元素后,对第一个参数不是字符串的小部件名称的所有其他调用都将调用 _init() 方法;如果传递了选项,则 .option() 方法将在 _init() 方法之前调用
扩展小部件(与 $.fn 相对)的缺点是您创建了对定义小部件“类”的 jquery-ui 的依赖项。对于不使用 jquery-ui 的插件用户来说,这种依赖可能会很昂贵。
就 _create 与 _init 而言,我很确定 _init 是最先出现的,然后在他们引入的最新版本中并支持 _create。我可能对此有误,但我相信 _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
方法。因此,这可用于重置(重新初始化)小部件或传递不同的选项。
有关每个阶段的更多详细信息,请点击此处。