Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 销毁()还是销毁()?_Javascript_Jquery_Jquery Ui_Jquery Ui Widget Factory - Fatal编程技术网

Javascript 销毁()还是销毁()?

Javascript 销毁()还是销毁()?,javascript,jquery,jquery-ui,jquery-ui-widget-factory,Javascript,Jquery,Jquery Ui,Jquery Ui Widget Factory,对于jQueryUI小部件中要实现的\u destroy或destroy方法,我有点困惑 在本文中,它表示实现destroy(),但在本文中,它表示实现\u destroy() 两个引用都说,这些方法应该将元素返回到它的前小部件状态。我理解这一部分,但为什么widget工厂中有两个版本的方法?从jQuery UI而不是MSDN上阅读文档 })) 只是为了澄清(并基于): 在jQuery UI 1.8中,您的小部件应该如下所示: $.widget( "demo.widget", { de

对于jQueryUI小部件中要实现的
\u destroy
destroy
方法,我有点困惑

在本文中,它表示实现
destroy()
,但在本文中,它表示实现
\u destroy()


两个引用都说,这些方法应该将元素返回到它的前小部件状态。我理解这一部分,但为什么widget工厂中有两个版本的方法?

从jQuery UI而不是MSDN上阅读文档

}))

只是为了澄清(并基于):

在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中,您不应该定义(public)
destroy
方法;定义
\u销毁
;其中不需要调用基本调用析构函数。

为什么不查看jQuery UI小部件系统的jQuery UI文档,而不是microsoft MSDN或教程加参考?既有销毁方法,也有_销毁方法:每种方法都有不同的用途。一个是公共的,另一个是私人的。当你调用public时,它最终会委托给private方法。@KevinB它不会用这些方法的简单的两句话文档来回答上述问题。我想它会的。您应该只实现您的特定小部件需要的那些。如果您不需要清理常见事件等,只需要清理特定于小部件的内容,那么只需实现私有的。@Kevin,实际上,jQuery UI小部件方法中的下划线前缀表示受保护的
,而不是
私有的
。但是是的,public
destroy()
方法将委托给
\u destroy()
。小部件现在应该覆盖受保护的方法,而不是公共方法。你能解释一下这是什么意思吗,因为我使用的是jQueryUI1.10。我应该
而不是
调用它吗?\u super()在destroy()末尾?@Mathew,仔细检查后,这取决于。您的小部件是否直接继承自
ui.widget
?它的意思是它将是
\u destroy:function(){/*您的代码在这里*/}
好的,谢谢。看,我不清楚。我认为UI文档需要更新,以便更好地反映像我这样的新用户的情况。你可以自己查看jQuery小部件的源代码,看看它们做了什么。请注意,如果你是,看起来你确实需要调用
this.\u super()
在你的小部件中\u destroy--如果不是,析构函数不会为正在扩展的小部件运行。
$.widget( "demo.widget", {
    _destroy: function() {
        // Perform widget-specific cleanup
        ...
    }
});