2012-01-20 46 views
1

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

<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

变化

$(document).ready(function() { 

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

JavaScript中的$并不是一个特殊字符 - 不像PHP它表明一个变量的开始,在javacript它只是另一个字符,可被用作任何变量的一部分。 jQuery已决定使用变量var $作为jQuery对象的快捷方式。同样,由于$不是jQuery的特殊保留字,任何库或脚本也可能会尝试使用它,这会导致冲突。

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

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

您在jsfiddle中链接到的库已正确设置为使用无冲突模式,因此它有可能存在冲突库,但永远不会告诉jquery使用无冲突模式。请尝试将文件准备好上述noconflict通话.. IE

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

凡曾经我得到这个错误我已经改变了...请解释笏它实际上做.. –

+0

虽然错误已移出我第一个文件,其代码已粘贴在上面。但现在它给我错误,我的图书馆的jsfiddle链接,我已经提供。 –

+0

I更新了原文帖子,提供更多信息 – jakraska