使用jquery.noConflict()

时间:2010-12-21 05:50:57

标签: jquery

我有两个文件。 HTML和.js文件。在code.js中,我编写了jquery代码,在HTML文件中,我将code.js包括在内:

<script src="jquery-1.4.2.js"></script>
<script src="jquery.interval.js"></script>
<script src="code.js">
jQuery.noConflict();
var $jcode = jQuery;
</script>

在code.js中,我写了以下内容:

jcode(document).ready(function() {
     jcode.interval(checkForms, 2000); 
});

当我运行它时,它给了我错误,因为无法读取间隔未定义的属性。 我认为我对noConflict的使用有问题。你能帮忙吗?

由于

5 个答案:

答案 0 :(得分:2)

您遇到的问题是使用包含内联代码的脚本标记的src属性。将调用noConflict移动到code.js或创建一个新的脚本标记,在引用code.js之前调用noConflict。

<script>
jQuery.noConflict();
var $jcode = jQuery;
</script>
<script src="code.js"></script>

另外,正如其他人所说,在引用你的jQuery别名时一定要使用$ jcode而不是jcode。

John Resig在他的Degrading Script Tags帖子中讨论了这个问题。

答案 1 :(得分:1)

您没有定义jcode变量。 $jcode完全不同。选择其中一个。坚持$jcode

另外,正如cleek所述,为code.js使用单独的(早期)script块:

<script type="text/javascript">
    $jcode(document).ready(function() {
         $jcode.interval(checkForms, 2000); 
    });
</script>
<script src="code.js" type="text/javascript"></script>

答案 2 :(得分:1)

您正在将jQuerys的$分配给$ jcode。

因此你应该使用$ jcode而不是jcode(例如$ jcode(document).ready())

$jcode(document).ready(function() {
   $jcode.interval(checkForms, 2000); 
});

这应该有用。

答案 3 :(得分:0)

<script src="jquery-1.4.2.js"></script>
<script src="jquery.interval.js"></script>
<script src="code.js">
$.noConflict();
</script>


jQuery(document).ready(function($) {
     $.interval(checkForms, 2000); 
});

尝试使用jQuery

代替$ symbol

答案 4 :(得分:0)

你正在混合使用内部和外部JavScript,这至少是一种不好的做法,甚至可能会失败。

将code.js中的代码替换为:

jQuery(document).ready(function() {
     jQuery.interval(checkForms, 2000); 
});

在您的页面中,编写脚本部分,如下所示:

<!-- no JavaScript before this line -->
<script src="jquery-1.4.2.js"></script>
<script src="jquery.interval.js"></script>
<script src="code.js"></script>
<script>jQuery.noConflict()</script>
<!-- load or insert other JavaScript here -->

这假设你实际上需要noConflict(),因为你的例子没有显示其他库。我假设你把它们排除在这个问题之外。

如果仍然出现错误,可能是因为jquery.interval.js没有正确编码。

相关问题