首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以在jQuery中创建名称空间吗?

可以在jQuery中创建名称空间吗?
EN

Stack Overflow用户
提问于 2009-02-09 04:01:36
回答 6查看 67.2K关注 0票数 52

YUI有一个很好的方法,可以在javascript中为你的方法等创建一个命名空间。

jQuery有没有类似的东西?

EN

回答 6

Stack Overflow用户

发布于 2013-05-30 20:16:59

这是我为我的插件创建名称空间的方式:

代码语言:javascript
复制
(function ($) {
    // do not overwrite the namespace, if it already exists
    $.MyNamespace = $.MyNamespace || {};
    $.MyNamespace.MyPlugin = function () {/*here's the logic*/}
})($);

然后:

代码语言:javascript
复制
$.MyNamespace.MyPlugin ();
票数 12
EN

Stack Overflow用户

发布于 2009-02-09 04:05:08

jQuery有一堆扩展基本功能的插件。对于简单的名称空间,有this plugin

票数 5
EN

Stack Overflow用户

发布于 2011-09-21 09:55:44

如果您想以这种方式使用jQuery:

代码语言:javascript
复制
$("*").namespace.do();

那么目前还没有插件可以做到这一点。(我找不到John Resig的jquery.space插件和Gilberto Saraiva插件,前者在jQuery 1.4中显然无法正常工作,后者显然没有达到预期的效果)。我很乐意看一看John的函数,看看它为什么停止工作,以及可以做些什么来使它工作,坦率地说,这将是创建整洁名称空间的最佳方法。

根据http://malnotna.wordpress.com/2009/01/12/jquery-namespace-support/,另一种方法是将名称空间设置为(使用Ariel Flesler的jQuery.Modularize ):

代码语言:javascript
复制
$("*").namespace().do()

但是这样的语法并不“漂亮”。我们还将结果从一个函数传递到另一个函数。

我创建名称空间的方法不是将名称空间放在末尾,而是放在$的开头,因此我们的$('*').namespace语法为:

代码语言:javascript
复制
$.namespace("*").do()

奇怪的是,我不知道为什么没有提到这种方法,因为它很容易让您在不覆盖现有函数的情况下创建无冲突的名称空间(通过使用$.sub())。而且,让它工作不需要任何东西。所以:

代码语言:javascript
复制
(function($){
    $.namespace = $.sub();
    $.fn.test = function(){ return 1 };              
    $.namespace.fn.test = function() { return 2};
})(jQuery);

console.log($('*').test(), $.namespace('*').test());

你已经准备好出发了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/527089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档