2011-08-15 75 views
1

问题几乎是理论上的。但是上次我遇到了一些微妙的错误。当页面包含子框架并且父框架和子框架都使用相同的js文件时,如果我在开始时未设置$ = jQuery,则此js文件的功能会崩溃。这里有什么窍门?

谢谢!

+0

我不完全确定你的意思,但'$ = jQuery'已经在内部设置了。 – pimvdb

+0

也许你正在使用jQuery的一个非常旧的版本,或者这个脚本是非常奇怪的。你是否收到任何错误讯息? – Kokos

+0

好的!谢谢大家!我抓到了我的错,问题在于jQuery.noConflict() – baio

回答

3

如果页面中的任何位置都包含其他JavaScript库,则可能使用$MootoolsPrototype都使用$

如果包括jQuery的,然后你有原型则$变量将被覆盖,所以你必须设置$ = jQuery之前的任何jQuery代码将工作:

<link rel="stylesheet" href="jQuery.js" /> 
<link rel="stylesheet" href="prototype.js" /> 
<script>$ = jQuery</script> 

同样,随着@Guffa说,如果您在任何地方拨打noConflict,它将会取消设置$变量。

理想情况下,我不认为你应该使用$变量,因为它可能会导致问题。只是这样做:

jQuery.noConflict(); 
var jQ = jQuery; 

然后使用jQ变量,你将有$。那么你不会得到冲突。

3

除非您从$变量中删除参考,否则不应该使用该参数。

检查,如果你使用的是noConflict方法某处从$变量分离jQuery的,或者有其他的东西(比如一个函数)命名$