jquery - 处理 jquery 命名空间冲突的好/最好方法是什么?

标签 jquery

我正在使用两个 jquery 插件。两者都使用原型(prototype)函数 removeTag 扩展了 jquery。这会导致第二个加载的插件正常工作,而第一个加载的插件则无法正常工作。

作为一个快速补丁,我将第二个插件上的removeTag - 以及对它的所有调用 - 重命名为其他内容。

显然,这不是一个好的解决方案。升级需要手动编辑,并且可能存在我尚未意识到的其他命名空间冲突。

有人可以推荐一些有效的策略来处理这个问题吗?

我使用的两个插件是:

最佳答案

您可以使用下面的代码添加一个js文件:

if (jQuery) {
    jQuery.namespace = function(namespace) {
            var names = namespace.split(".");
            var parent = window;
            for (var index = 0; index < names.length; index++) {
                    if (!parent[names[index]]) {
                            parent[names[index]] = function() {
                                    throw "Namespace, Cannot instantiate";
                            }
                    }
                    parent = parent[names[index]];
            }
    }

}

在您的脚本中,您可以像下面这样使用它:

$.namespace("Somejs.MyCustomjs");

稍后的代码引用完整的命名空间,例如:

SomeJs.MyCustomjs.myFunc();

希望有帮助

编辑:我忘了提及,在 js 类的声明中,您使用了完整的命名空间

关于jquery - 处理 jquery 命名空间冲突的好/最好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10557873/

相关文章:

javascript - 如何暂停提交事件直到 AJAX 事件完成?

javascript - 在 JavaScript 中获取数字中小数位数的最简单方法

javascript - 通过 jQuery 将图片发送到 PHP - FormData 每次都是空的

jquery - 如何使用jquery将数据附加到div的顶部

javascript - WordPress 在哪里存储自定义帖子类型?

jquery - PhoneGap + jQueryMobile : Android back button closes app in nested list

javascript - 如何使用 jquery 在现有 li 列表之间添加带有文本的 li 元素?

jquery - 从 JS 函数而不是选择器激活 Overlay jquery

javascript - 为隐藏的输入 onclick 赋值

javascript - 捕获和编辑回调函数的响应