28

我想我理解小部件定义之间的区别(例如参见_create这个问题,但我仍然不确定区分的目的。什么样的设置任务进入或进入?如果小部件作者选择了错误的,会出现什么问题?_init_create()_init()

4

2 回答 2

36

从:

用于_create构建和注入标记、绑定事件等。将默认功能放在_init(). 例如,对话框小部件提供了一个autoOpen参数,表示一旦小部件初始化,对话框是否应该打开;一个完美的地方 _init()

还:

小部件工厂在初始化期间按顺序自动触发_create()和方法。_init()乍一看似乎是重复的努力,但两者之间存在视觉差异。因为小部件工厂可以防止同一元素上的多个实例化,所以 _create()每个小部件实例最多会被调用一次,而_init()每次调用小部件时都会被调用而不带参数......

如果作者使用_init()when _create()should have beencoded ,结果将是_init()每次小部件实例化都会执行一次代码。

于 2011-01-03T15:54:17.700 回答
5

简短回答: _create() 将在您第一次运行 jquery-ui 插件时执行,例如 $xx.your-plugin(your options); _init() 将在您的代码第一次运行到 $xx.your-plugin(your options); 时先执行,然后再执行。

因为 jquery-ui.custom.js 中有一些代码是这样的:

var instance = $.data( this, fullName );
if ( instance ) {
    instance.option( options || {} )._init();
}

所以,如果你用jquery-ui插件画了一个图表,当它画出来之后,你想用新的数据来更新它,你需要在_init()中这样做来更新你的图表。如果您只是显示某些内容并且不会完全更新它们, _create() 将满足您的需求。

于 2013-05-16T04:48:30.750 回答