如何在jQuery UI小部件中决定_init和_create?

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

从:

使用_create构建和注入标记,绑定事件等。在_init()放置默认function。 例如,对话框小部件提供autoOpen参数,表示在初始化小部件后是否应该打开对话框; _init()的最佳位置!

也:

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

如果作者在_create()应该被编码时使用_init() ,结果将是每个小部件实例化时_init()中的代码将被执行一次。

简短回答 :_create()将在你第一次运行你的jquery-ui插件时执行,比如$ xx.your-plugin(你的选项); _init()将在您的代码第一次运行到$ xx.your-plugin(您的选项) 之后首先执行;

因为jquery-ui.custom.js中有一些代码如下:

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

因此,如果您使用jquery-ui插件绘制图表 ,在绘制完成后,您希望使用新数据进行更新 ,则需要在_init()中执行此操作以更新图表。 如果您只显示某些内容并且不会完全更新它们,_create()将满足您的需求。