如何成为 jQuery no.conflict 专家?
我经常遇到 jQuery 与 Prototypes JS 的冲突错误。而且我不是 jquery 专家。
我还能解决所有的冲突问题吗。如何获得解决冲突问题的专业知识。
如何知道整个代码是jquery。如果简单的 javascript 和 jquery 代码混合在一个 js 文件中怎么办?
如果内部外部js代码直接从
开始 var opbox="";
这是我无法更改的源代码顺序
1
<script type="text/javascript" src="jquery.min.js"></script>
2
我想从 example.js 中删除冲突错误
<script type="text/javascript" src="example.js"></script>
3
<script type="text/javascript" src="Prototype.js"></script>
4
<script type="text/javascript" src="scriptaculous.js ></script>
最佳答案
问题是如果你想在页面上使用Prototype,$
必须是Prototype的$
,而不是jQuery的。因为无论如何 $
只是 jQuery
的一个别名,jQuery 提供了 noConflict
用作告诉 jQuery 将 $
的控制权返回到加载 jQuery 之前的控制权的一种方式。
这意味着无论何时你可能使用 $
,你都会使用 jQuery
,例如:
$('.foo').hide(); // Hide all elements with class "foo"
成为
jQuery('.foo').hide(); // Hide all elements with class "foo"
如果您正在使用外部脚本,并且如果它们使用$
,您必须修改它们。一种方法是进行搜索和替换,并将所有(适当的)$
更改为 jQuery
。
另一种方法是将其放在包含 jQuery 的脚本标记之后:
<script type='text/javascript'>jQuery.noConflict();</script>
...然后将其添加到外部脚本的顶部:
(function($) {
...这是它的底部:
})(jQuery);
(是的,这意味着您必须修改外部脚本。)
它所做的是将整个外部脚本放入一个函数中,其中 $
符号被解析为 jQuery
而不是 Prototype 的 $
,因为 $
是该函数的参数,因此它具有优先权。但是,该技术对于某些脚本会失败。如果他们期望他们的函数声明将在全局范围内发生(例如,成为 window
对象的属性),那么将整个脚本放在一个函数中会破坏它。在这些情况下,您必须通过将这些函数分配给 window
来手动导出这些函数,或者使用上面的全局搜索和替换选项。
在 jQuery noConflict
页面上有这方面的示例,尽管它们经常将上述内容与 ready
函数结合使用,这可能有点令人困惑。
请注意 bobince 关于框架之间冲突的观点不仅仅限于 $
符号。如果您可以坚持只使用一个框架,那就去做吧。
关于javascript - 如何成为 jQuery no.conflict 专家?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2721815/