我在一个页面上有2个js。在其中一个j我正在做var jQuery = $.noConflict(true);
之后使用jQuery对象使用所有jQuery方法,比如jQuery("#div").hide();
在另一个js中,我正在使用传统的$ variable&以$("#div").hide();
当我在页面上使用2个j中的任何一个时,一切正常。但是,当我包含两者时,第二个js中的$似乎被jQuery覆盖。例如,在js 2中我不能再$("#div").hide()
但是如果我使用jQuery而不是$,它可以正常工作 - jQuery("#div").hide();
!
为什么我要尝试这个是因为第一个div将作为插件分发到不同的网站,第二个js可能是该网站开发人员编写的Jquery。
请帮我弄清楚我哪里出错..
感谢。
答案 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建议这种模式