我对扩展jqueryUI的对话框小部件的行为感兴趣。在过去,我已经覆盖了这样的功能:
//Custom dragging
$.ui.dialog.prototype._makeDraggable = function () {}
但我认为我应该改用使用widget工具来创建一个新的小部件,而不是从对话框继承。
我相信代码应该是这样的:
(function($, undefined) {
$.widget('cs.dialog', $.ui.dialog, {
// definition of the widget goes here
});
}(jQuery));
我的问题是,即使我的对话框小部件位于cs命名空间中且jquery位于ui名称空间中,这会导致冲突吗?我相信jquery将小部件方法附加到$ .fn所以我认为它会。
如果是这样,如果您仍然遇到冲突,命名空间的目的是什么?我是否需要将我的小部件命名为“cs.csDialog”以保持其独特性?我觉得我对此有所了解。
感谢您的帮助或澄清。
答案 0 :(得分:2)
$.widget()
在内部调用$.widget.bridge()
以将小部件方法添加到$
对象:
$.widget.bridge(name, $[namespace][name]);
如您所见,它只传递小部件的名称和创建功能。命名空间仅用于访问创建函数,而不是方法名称的一部分。
因此,在您的情况下,调用您的小部件dialog
确实会取代$.dialog()
。但是,原始的$.dialog()
方法仍然可以$.ui.dialog()
方式使用,同样地,您的$.cs.dialog()
方法仍可用{{1}}。