首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何成为jQuery no.conflict专家?

如何成为jQuery no.conflict专家?
EN

Stack Overflow用户
提问于 2010-04-27 13:59:38
回答 3查看 13.5K关注 0票数 3

如何成为jQuery no.conflict专家?

我主要使用原型JS来面对jQuery冲突错误。我也不是jquery专家。

我还能解决所有冲突问题吗。如何获得专家来解决冲突问题。

如何了解整个代码是jquery。如果简单的javascript和jquery代码混合在一个js文件中怎么办?

如果外部js代码直接从

代码语言:javascript
复制
       var opbox="";

这是我无法更改的来源订单

1

代码语言:javascript
复制
<script type="text/javascript" src="jquery.min.js"></script> 

2

我想从example.js中删除冲突错误

代码语言:javascript
复制
<script type="text/javascript" src="example.js"></script>

3

代码语言:javascript
复制
<script type="text/javascript" src="Prototype.js"></script>

4

代码语言:javascript
复制
<script type="text/javascript" src="scriptaculous.js ></script>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-27 14:22:39

问题是,如果您想在页面上使用Prototype,$必须是Prototype的$,而不是jQuery的。由于$只是jQuery的别名,jQuery提供了noConflict函数来告诉jQuery将$的控制权返回到jQuery加载之前的任何位置。

这意味着,每当您可能使用$时,都会使用jQuery,例如:

代码语言:javascript
复制
$('.foo').hide(); // Hide all elements with class "foo"

变成了

代码语言:javascript
复制
jQuery('.foo').hide(); // Hide all elements with class "foo"

如果使用外部脚本,如果它们使用$,则必须修改它们。一种方法是进行搜索和替换,只需将所有(适当的)$改为jQuery

另一种方法是将其放在脚本标记(包括jQuery)之后:

代码语言:javascript
复制
<script type='text/javascript'>jQuery.noConflict();</script>

然后,...and将其添加到外部脚本的顶部:

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

在它的底部...and这个:

代码语言:javascript
复制
})(jQuery);

(是的,这意味着您必须修改外部脚本。)

这样做是将整个外部脚本放入一个函数中,其中$符号被解析为jQuery,而不是Prototype的$,因为$是该函数的一个参数,因此它优先。但是,这种技术在某些脚本中会失败。如果他们预期其函数声明将发生在全局范围(例如,成为window对象的属性),那么将整个脚本放在一个函数中就会破坏它。在这种情况下,您必须手动导出这些函数,将它们分配给window,或者使用上面的全局搜索和替换选项。

在jQuery noConflict页面上有这样的例子,尽管它们经常将上面的内容与ready函数结合起来,这可能有点让人费解。

注意bobince关于框架之间冲突的观点,而不仅仅局限于$符号。如果您可以坚持只使用一个框架,那么就这样做。

票数 9
EN

Stack Overflow用户

发布于 2010-04-27 14:06:29

不要使用$快捷方式,而是在使用jQuery功能时调用jQuery.noConflict()并使用全长jQuery()对象。

例如:

代码语言:javascript
复制
<script>
    $(document).ready(function(){
        // Do some DOM manipulation here
    });
</scipt>

将成为:

代码语言:javascript
复制
<script>
   jQuery.noConflict();

   jQuery(document).ready(function(){
       // Do some DOM manipulation here
   });
</script>
票数 5
EN

Stack Overflow用户

发布于 2012-03-31 08:57:24

为什么不直接做

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

https://stackoverflow.com/questions/2721815

复制
相关文章

相似问题

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