jquery没有冲突的错误

时间:2012-01-20 19:38:54

标签: jquery

我有用于切换效果的特定文件集。当我使用这两个文件时,它适用于我。但我用复制文件与我的js文件集合,所以它开始给我错误。它给了我相互矛盾的错误。当萤火虫。它在第一个文件中显示错误。

<script>
$(document).ready(function() {
//$.noConflict();
    $('.toggle_block').toggleElements({
        fxAnimation:'slide',
        fxSpeed:'fast',
        className:'toggler'
    });

});
 </script>

Firebug错误是:

$(".toggle_block").toggleElements is not a function
className:'toggler'

它的缩小版本在jsfiddle链接上。 http://jsfiddle.net/cHjMD/

每当我遇到冲突错误时,我都会使用$.noConflict();删除它,有时它也会解决我的错误。但这次它没有帮助我。我想永久解决这个问题。在这里我也评论了noconflict代码。

请求请不要提供我读取noConflict功能的链接。我已多次阅读。如果你以更好的方式定义,那么我会很高兴。

1 个答案:

答案 0 :(得分:1)

更改

$(document).ready(function() {

jQuery(document).ready(function($){

在javascript中,$不是特殊字符 - 与PHP不同,它表示变量的开头,在javacript中它只是另一个字符,可以用作任何变量的一部分。 jQuery决定使用变量var $作为jQuery对象的快捷方式。同样,因为$不是jQuery的特殊保留字,所以任何库或脚本也可能尝试使用它,这将导致冲突。

$ .noConflict();函数告诉jQuery放弃对$变量的控制,并将其恢复到其他库使用它。在你调用它之后,$不再代表jQuery。这就是您收到错误消息的原因。

我上面发布的解决方案有效,因为它不使用$ alias来设置document.ready函数,而是使用完整的jQuery对象。此外,ready()函数作为参数传递jQuery对象...因此,通过使用$作为参数名称,$ variable现在再次表示jQuery,但仅在document.ready函数的范围内。

您在jsfiddle中链接到的库已正确设置为使用无冲突模式,因此可能存在冲突库,但永远不会告诉jquery使用无冲突模式。尝试在文档上方添加noconflict调用.IE IE

jQuery.noConflict();
jQuery(document).ready(function($){