首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery无冲突错误

问jquery无冲突错误
EN

Stack Overflow用户
提问于 2012-01-21 03:38:54
回答 1查看 143关注 0票数 1

我有一组特殊的文件用于切换效果。当我分别使用这两个文件时,它对我有效。但是我用js文件的集合来复制文件,所以它开始给我错误。这给了我一个相互矛盾的错误。当萤火虫。它在第一个文件上显示错误。

代码语言:javascript
复制
<script>
$(document).ready(function() {
//$.noConflict();
    $('.toggle_block').toggleElements({
        fxAnimation:'slide',
        fxSpeed:'fast',
        className:'toggler'
    });

});
 </script>

Firebug错误是:

代码语言:javascript
复制
$(".toggle_block").toggleElements is not a function
className:'toggler'

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

每次我遇到冲突错误时,我都会使用$.noConflict();删除它,有时它也会整理出我的错误。但这一次它帮不了我。我想永久地解决这个问题。这里我也注释了无冲突代码。

请不要为我提供阅读noConflict函数的链接。我已经读过很多次了。如果你用更好的方式来定义,我会很高兴。

EN

回答 1

Stack Overflow用户

发布于 2012-01-21 03:46:28

变化

代码语言:javascript
复制
$(document).ready(function() {

至

代码语言:javascript
复制
jQuery(document).ready(function($){

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

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

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

您在jsfiddle中链接的库已正确设置为使用无冲突模式,因此您可能有一个冲突库,但从未告诉jquery使用无冲突模式。尝试将无冲突调用添加到文档ready之上..即

代码语言:javascript
复制
jQuery.noConflict();
jQuery(document).ready(function($){
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8946949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档