我对jQuery UI Widget中要实现的_destroy
或destroy
方法感到有点困惑。
在此MSDN Widget Reference中,它表示要实施destroy()
,但在此Tutorial Plus引用中,它表示要实施_destroy()
。
两个引用都说这些方法应该将元素返回到它的 pre-widget 状态。所以这部分我理解,但为什么在widget工厂中有这个方法的两个版本?
答案 0 :(得分:2)
从jQuery UI而不是在MSDN上阅读文档
http://wiki.jqueryui.com/w/page/12138135/Widget%20factory
// Use the destroy method to clean up any modifications your widget has made to the DOM
destroy: function() {
// In jQuery UI 1.8, you must invoke the destroy method from the base widget
$.Widget.prototype.destroy.call( this );
// In jQuery UI 1.9 and above, you would define _destroy instead of destroy and not call the base method
}
});
答案 1 :(得分:1)
只是为了澄清(并基于this):
在jQuery UI 1.8中,您的小部件应如下所示:
$.widget( "demo.widget", {
destroy: function() {
// Invoke the base destroy method
$.Widget.prototype.destroy.call( this );
// Perform widget-specific cleanup
...
}
});
并在jQuery UI 1.9中,如下所示:
$.widget( "demo.widget", {
_destroy: function() {
// Perform widget-specific cleanup
...
}
});
也就是说,在1.9中你不应该定义一个(公共)destroy
方法;改为定义_destroy
;并且在其中不需要调用基本调用析构函数。