多个jQuery库之间的冲突

时间:2012-01-23 22:45:24

标签: jquery

如何处理两个独立的jQuery库?我需要它们两个,但两个结果都会产生冲突,只有一个功能可以使用。

1 个答案:

答案 0 :(得分:7)

这取决于。实际上,您可以同时在页面中同时激活它们,但只有其中一个可以包含$符号,并且其中只有一个可以包含jQuery符号。但从技术上讲,你可以在一个页面上有多个:

<script src="jquery-1.5.2.js"></script>
<script>var $j15 = jQuery.noConflict(true);</script>
<script src="jquery-1.7.1.js"></script>
<script>
    // Here, $ = jQuery = jQuery 1.7.1
    // $j15 = jQuery 1.5.2
</script>

请注意,即使在该环境中,经过良好创作的jQuery插件也能正常工作,例如:

<script src="jquery-1.5.2.js"></script>
<script src="plugin-requiring-1.5.2.js"></script>
<script>var $j15 = jQuery.noConflict(true);</script>
<script src="jquery-1.7.1.js"></script>
<script>
    // Here, $ = jQuery = jQuery 1.7.1
    // $j15 = jQuery 1.5.2
    $j15("selector").pluginRequiring152(...);
</script>

...因为一个写得很好的插件看起来像这样:

(function($) {
    $.fn.pluginRequiring152 = ...;
})(jQuery);

...所以在你包含它的时候会使用jQuery的任何内容,如果你之后关闭了noConflict(true),就不会破坏。

这是个好主意吗?几乎肯定不是。最好解决任何问题,使您需要多个版本的jQuery,并且只包含您测试过的最新版本。