jquery小部件,_create或_init

时间:2010-10-20 22:33:25

标签: jquery jquery-ui widget construction

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

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

3 个答案:

答案 0 :(得分:18)

来自jQuery UI Developer Guide

  

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

之前调用.option()方法

答案 1 :(得分:5)

扩展小部件(而不是$ .fn)的缺点是你在jquery-ui上创建了一个依赖,它定义了小部件“class”。对于不使用jquery-ui的插件用户而言,这种依赖性可能会很昂贵。

就_create vs _init而言,我很确定_init首先出现,然后在最近的修订版本中,他们引入并支持_create。我可能错了,但我相信_init仍然受到支持。如果是,那么两者之间应该没有任何差异。

答案 2 :(得分: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方法。因此,这可用于重置(重新初始化)窗口小部件或将其传递给不同的选项。

有关每个阶段的更多详情here