jquery小部件,_create或_init

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

关于什么时候更好地扩展小部件或直接扩展jquery.fn的任何指导?

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

至于_create vs _init,我非常肯定_init是第一个,然后在最近的修订中他们引入并支持_create。 我可能错了,但我相信_init仍然受到支持。 如果是,那么两者之间不应该有任何差异。

来自jQuery UI开发人员指南 :

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

小部件有三个阶段:

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

关于每个阶段的更多细节。