我想我理解小部件定义之间的区别(例如参见_create
这个问题),但我仍然不确定区分的目的。什么样的设置任务进入或进入?如果小部件作者选择了错误的,会出现什么问题?_init
_create()
_init()
2 回答
从:
- http://forum.jquery.com/topic/jquery-ui-1-8-use-of-init
- http://www.erichynds.com/jquery/tips-for-developing-jquery-ui-widgets/
- http://jqueryui.com/demos/dialog/
用于
_create
构建和注入标记、绑定事件等。将默认功能放在_init()
. 例如,对话框小部件提供了一个autoOpen
参数,表示一旦小部件初始化,对话框是否应该打开;一个完美的地方_init()
!
还:
小部件工厂在初始化期间按顺序自动触发
_create()
和方法。_init()
乍一看似乎是重复的努力,但两者之间存在视觉差异。因为小部件工厂可以防止同一元素上的多个实例化,所以_create()
每个小部件实例最多会被调用一次,而_init()
每次调用小部件时都会被调用而不带参数......
如果作者使用_init()
when _create()
should have beencoded ,结果将是_init()
每次小部件实例化都会执行一次代码。
简短回答: _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() 将满足您的需求。