如何成为一个jQuery no.conflict专家?
如何成为一个jQuery no.conflict专家?
我主要面对Prototypes JS的jQuery冲突错误。 而且我不是jquery专家。
我还能解决所有冲突问题吗? 如何专业化解决冲突问题。
如何知道整个代码是jquery。 如果简单的javascript和jquery代码混合在一个js文件中怎么办?
如果内部外部js代码直接从内部开始怎么办?
var opbox="";
这是我无法改变的源订单
1
2
我想从example.js中删除冲突错误
3
4
问题是,如果你想在页面上使用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的脚本标记之后:
…然后将其添加到外部脚本的顶部:
(function($) {
……这就在它的底部:
})(jQuery);
(是的,这意味着您必须修改外部脚本。)
这样做是将整个外部脚本放在一个函数中,其中$
符号被解析为jQuery
而不是Prototype的$
,因为$
是该函数的参数,因此它优先。 但是,该技术将失败并出现一些脚本。 如果他们期望他们的函数声明将在全局范围内发生(例如,成为window
对象的属性),那么将整个脚本放在一个函数中就会破坏它。 在这些情况下,您必须通过将这些function分配给window
或使用上面的全局搜索和替换选项来手动导出这些function。
在jQuery noConflict
页面上有这样的例子,尽管它们经常将上面的内容与ready
函数结合起来,这可能有点令人困惑。
注意bobince关于框架之间冲突的观点,而不仅仅局限于$
符号。 如果您可能只使用一个框架,那就这样做吧。
在使用jQueryfunction时,不要使用$
快捷方式,而是调用jQuery.noConflict()
并使用全长jQuery()
对象。
例如:
会成为:
为什么不这样做