Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 避免与jQuery发生$冲突_Javascript_Jquery_Frameworks_Conflict - Fatal编程技术网

Javascript 避免与jQuery发生$冲突

Javascript 避免与jQuery发生$冲突,javascript,jquery,frameworks,conflict,Javascript,Jquery,Frameworks,Conflict,我很确定这一定是以另一种形式提出的,但搜索$符号在这里不会产生任何结果 我已经制作了一个大系统,并广泛使用jQuery,使用$引用它。在这一点上,我不想回去 我的问题是,现在我已经实现了CKEditor,它和许多其他JavaScript框架一样,也使用$引用自身。所以现在我有了一个冲突和很多: Uncaught TypeError: cannot get property 'any_function' of undefined 我不想通过CKEditor代码进行搜索和替换,因为我将在将来进行更

我很确定这一定是以另一种形式提出的,但搜索$符号在这里不会产生任何结果

我已经制作了一个大系统,并广泛使用jQuery,使用$引用它。在这一点上,我不想回去

我的问题是,现在我已经实现了CKEditor,它和许多其他JavaScript框架一样,也使用$引用自身。所以现在我有了一个冲突和很多:

Uncaught TypeError: cannot get property 'any_function' of undefined
我不想通过CKEditor代码进行搜索和替换,因为我将在将来进行更新。我还想继续在jQuery中使用$,但没有其他用途

当然,我不能简单地使用:

$.noConflict()
不破坏我的脚本

有没有一种方法可以让我随时使用$forjQuery,同时让我的JavaScript框架在内部使用$forjQuery


我的最佳/最简单的解决方案是什么?

您可以将任意一组代码包装在一个容器中,并将相关对象传递给它

(function($) {
  // Code that uses jQuery
})(jQuery);
我还建议在加载CKEditor之后立即将其分配给其他对象,以便您可以遵循类似的CKEditor代码模式

// Right after loading CKEditor
var CKEditor = $;

// Code that uses CKEditor
(function($) {
   ...
})(CKEditor);

尽管将CKEditor重新分配给另一个变量并仅使用该变量更具可持续性。

您是否寻找了一个与JQuery一起使用的版本?我知道TinyMCE有这个功能。CKEditor的文档使用一个名为
CKEditor
,而不是
$
的全局变量来显示它。你确定你的变量来源正确吗?是的,这是正确的,昆汀。但是,CKEditor脚本在内部也使用$。更确切地说,CKEditor可以与jQuery兼容,如果您从一开始就正确格式化代码,确保jQuery不会与其他脚本冲突。我只是没有做到这一点,所以现在我必须找到另一个解决方案。好吧,问题是jQuery被散布在整个系统中,我希望能够使用$来实现这一点。CKEditor在其自己的库外部调用时分配给CKEditor变量,但在内部使用$。这就是造成冲突的原因。我将尝试在一个作用域函数中包装CKEditor。@Pjottur关于它的价值,我现在正在查看CKEditor的源代码,但我没有看到它在任何地方引用
$
。也许你有一个旧版本或者别的什么,或者你可能找错了地方。这当然会解决我的问题。但是,既然这应该是一个常见的问题,如果有一些聪明的解决方案,这可能会很好。@Pjottur我不会说这是一个非常常见的问题。jQuery有
.noConflict
,这是有原因的。“智能”解决方案是要么使用不引用
$
的CKEditor版本,要么重新编写代码以使用
.noConflict
。我以前遇到过这个问题,但总是处于可以轻松为其重新编写代码的阶段。我想这应该经常发生,因为我不可能是唯一一个没有提前计划的人。。。我只是觉得应该有一个简单的方法来玩的范围不知何故,并能够使用它,因为我可能会发现自己在未来的某个时候再次在相同的混乱。。。