定义JQuery变量的范围,不同的js - 单页

时间:2012-02-23 13:55:59

标签: javascript jquery

我在一个页面上有2个js。在其中一个j我正在做var jQuery = $.noConflict(true);之后使用jQuery对象使用所有jQuery方法,比如jQuery("#div").hide();

在另一个js中,我正在使用传统的$ variable&以$("#div").hide();

的形式访问jQuery方法

当我在页面上使用2个j中的任何一个时,一切正常。但是,当我包含两者时,第二个js中的$似乎被jQuery覆盖。例如,在js 2中我不能再$("#div").hide()但是如果我使用jQuery而不是$,它可以正常工作 - jQuery("#div").hide();

为什么我要尝试这个是因为第一个div将作为插件分发到不同的网站,第二个js可能是该网站开发人员编写的Jquery。

请帮我弄清楚我哪里出错..

感谢。

3 个答案:

答案 0 :(得分:1)

您正在使用noConflict,它会在$上释放jQuery。如果它是在单独的脚本中无关紧要,因为它是相同的全局环境。

在您要使用$的脚本中,在.ready()处理程序中定义该变量。

jQuery(function($) {
    $('foo').bar();
});

答案 1 :(得分:0)

文件没有作用域,您为整个页面取消引用$ noConflict。什么

答案 2 :(得分:0)

解决此问题的最简单方法是使用插件作者使用的模式。

(function($) {

    // Use $ safely within the function

})(jQuery); // Passes in jQuery object

这是立即创建和调用的函数,同时允许您将变量传递到函数的范围内。使用它,您可以继续引用代码中的$,而不用担心覆盖它或冲突。

jQuery documentation建议这种模式