Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 no.冲突专家?_Javascript_Jquery - Fatal编程技术网

Javascript 如何成为jQuery no.冲突专家?

Javascript 如何成为jQuery no.冲突专家?,javascript,jquery,Javascript,Jquery,如何成为jQuery no.冲突专家 我主要面对jQuery与JS原型之间的冲突错误。我不是jquery专家 我还能解决所有冲突问题吗。如何获得解决冲突问题的专业知识 如何知道整个代码是jquery。如果简单的javascript和jquery代码混合在一个js文件中会怎么样 如果内部外部js代码直接从 var opbox=""; 这是我不能更改的源订单 1 <script type="text/javascript" src="jquery.min.js"><

如何成为jQuery no.冲突专家

我主要面对jQuery与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>

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

例如:

<script>
    $(document).ready(function(){
        // Do some DOM manipulation here
    });
</scipt>

$(文档).ready(函数(){
//在这里做一些DOM操作
});
将成为:

<script>
   jQuery.noConflict();

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

jQuery.noConflict();
jQuery(文档).ready(函数(){
//在这里做一些DOM操作
});

问题是,如果要在页面上使用Prototype,
$
必须是Prototype的
$
,而不是jQuery的。由于
$
只是
jQuery
的别名,因此jQuery提供了一种功能,告诉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>
…下面是:

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

这样做的目的是将整个外部脚本放在一个函数中,
$
符号被解析为
jQuery
,而不是原型的
$
,因为
$
是该函数的一个参数,因此它具有优先权。但是,这种技术在某些脚本中会失败。如果他们期望自己的函数声明发生在全局范围内(例如,成为
窗口
对象的属性),那么将整个脚本放在一个函数中将打破这一点。在这些情况下,您必须通过将这些函数分配到
窗口来手动导出这些函数,或者使用上面的全局搜索和替换选项

jQuery
noConflict
页面上有这样的例子,尽管它们经常将上述内容与
ready
函数结合使用,这可能会有点混淆

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

为什么不这样做呢

<script>
jQuery.noConflict();
(function($){
   $(function(){
      alert('code here');
   });
})(jQuery);
</script>

jQuery.noConflict();
(函数($){
$(函数(){
警报(“此处代码”);
});
})(jQuery);

您具体需要哪些帮助?基本原则是直截了当的:顺便说一句,
noConflict
根本不能保证框架之间,尤其是它们的插件之间不会有冲突。例如,jQuery将自定义属性添加到它正在处理的元素中;通过使用另一个框架处理元素,意外地更改、删除或复制这些属性,您可能会最终混淆它。如果您别无选择,只能使用两个框架,请尽可能将它们的活动彼此分开。但是要极力避免在一个页面上使用两个像jQuery一样具有侵入性的框架。它与大多数库的唯一冲突是“$”函数别名,它是jQuery函数/对象的别名。根据指南编码的插件应该可以工作。我所看到的唯一难以处理的冲突是事件注册冲突……但在外部js中如何处理?始终在外部脚本中使用全长jQuery对象。这样,您只需将对jQuery.noConflict()的调用添加到您的页面中即可。如果$(document).ready(函数(){不在外部js的顶部?我将一段代码包装为您的第二个示例代码,但people问题没有得到解决。如果您希望不发生冲突,则不应使用$(document).ready()在外部js文件的顶部。它们应该使用jQuery(document).ready()相反,@T.J.Crowder-请在更新我的问题后解释你的第二种方法。@metal gear solid:所以在#1和#2之间,你可以把我上面显示的内联脚本放在调用
noConflict
的地方。然后你可以编辑
example.js
将这些行放在上面和下面。如果你在自己的页面上使用任何脚本(与
example.js
)分开,确保使用
jQuery
,而不是
$
@T.J.Crowder-您的意思是对于外部js,我们只需要将外部代码包装在这个(函数($){//external code})(jQuery)中;而且不需要用jquery替换$。@metal gear solid:应该可以,是的,因为他们代码中的
$
将解析为匿名函数的参数,而不是全局参数。@@T.J.Crowder-但是如果外部代码直接从“var opbox=”“”开始,该怎么办?无论外部js中写了什么,您的技术都有效吗?
<script>
jQuery.noConflict();
(function($){
   $(function(){
      alert('code here');
   });
})(jQuery);
</script>