javascript - 如何成为 jQuery no.conflict 专家?

标签 javascript jquery

如何成为 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/

相关文章:

javascript - 评级栏弹出窗口?(就像亚马逊的那个)

javascript - 无法在 Javascript 中将数组按升序排序

javascript - 使用 CORS 通过 Canvas 的 HTML5 视频截图

尽管有 web.config 条目,带有 ASP.NET WCF 服务的 jQuery AJAX CORS 仍无法工作

javascript - 使用 jQuery Buttonset 进行不需要的滚动

javascript - jquery:动态生成的表中未弹出对话框

javascript - 高级 Ramda 数组转换

jquery - 固定滚动位置的元素在页面加载时跳出位置

javascript - 使用 Jquery 变量来识别 div 类/Id

javascript - 包括用于 Facebook 评论框的 JavaScript SDK