带名称空间的jQuery小部件工厂 - 在jQuery.fn中没有效果

时间:2012-11-07 20:05:03

标签: javascript jquery jquery-ui

在jQuery.ui.widget这个小工具工厂中,如果最终widget.bridge使用小部件污染jQuery.fn而不考虑命名空间,那么什么是名称空间很好呢?

示例小部件:$.widget( 'mynamespace.mywidget', { ... } );

将在$.mynamespace.mywidget中创建一个新原型 - 到目前为止一直很好。

但是,在我使用命名空间定义窗口小部件的情况下,我真的希望也使用像$('...').mynamespace.mywidget()这样的命名空间而不仅仅是$('...').mywidget()。为什么默认情况下它不是这样的,是不是不推荐这样的东西呢?

在小部件工厂中自动完成桥接操作是错误的。我想之后可以移动桥,但到那时,$ .fn.mywidget中的任何内容都将被覆盖。

1 个答案:

答案 0 :(得分:0)

如果您有两个同名的小部件,您可以使用不同的名称手动创建网桥,如下所示:

$.widget('my.widget', {  });
$.widget('your.widget', {  });

$.widget.bridge('widget2', $.my.widget);

然后会给你$ .fn.widget和$ .fn.widget2,这样两者都可以使用。命名空间只是确保如果两个小部件具有相同的名称,则不会覆盖构造函数。