javascript - 如何在我的 javascript 模块中包含 jquery 而不与全局命名空间发生冲突?

标签 javascript jquery

我正在开发一个 javascript 模块,我希望它是独立的。我还想使用 jQuery 提供的跨浏览器功能。如何在我的模块中包含 jQuery,而不与潜在的用户包含的 jQuery 发生冲突?

有没有通用的方法可以做到这一点,以便我可以将其他库添加到我的项目中而不与全局命名空间发生冲突?

最佳答案

我会尝试将所有 jQuery 复制到您的 JS 文件中,然后 running it in "no conflict" mode 。然后,如果您将整个 JS 文件包装在 immediately invoked function expression 中不带参数,您的 $ 变量不会干扰全局范围。

因此,您的文件将类似于:

(function () {
    // all of jQuery goes here

    $.noConflict();
    var $ = jQuery.noConflict();

    // your code that uses $ here
})();

将所有内容包装在 IIFE 中将使您的 $ 变量保持在本地,因此文件外部的任何代码都无法访问它。这可能有点极端,但应该可行。

编辑:我自己尝试过之后,我的上述解决方案是不正确的。

实际上想要做的只是确保您的 jQuery 版本包含在用户的版本之前。然后在代码中运行 var myJQ = jQuery.noConflict(); 并使用 myJQ 代替 $jQuery 在您的代码中。 See this example.

关于javascript - 如何在我的 javascript 模块中包含 jquery 而不与全局命名空间发生冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11782429/

相关文章:

javascript - [HTML/JavaScript] : If a function inside onClick() fails, 请勿提交

javascript - 全选复选框的脚本在 WordPress 页面上不起作用

JavaScript 设计模式 : how to create sub-module and access parent module private vars and functions

javascript - jquery设置错误RequestUrl的问题

jquery - 如何扩展 float 的div以占用动态删除的div留下的空间?

javascript - HTML 和 JS 中 div 的重叠问题

javascript - Rx debounce operator with first 和 last

javascript - 使用ajax将javascript变量传递给PHP但它给出错误

javascript - 用 div 包装链接组? (PHP 是一种选择)

javascript - 如何从 XMLHttpRequest 响应中获取 <p> 标签值并在 html 中设置