当存在多个jquery版本时,如何为库指定具有特定版本的jquery?

时间:2016-09-06 07:26:04

标签: jquery

假设我在index.html中使用了3个不同版本的jquery(1.3,1.5,2.3)。我正在使用一个使用jquery 1.3的CSS框架(当然,在那个css框架$符号已被用作jQuery的别名。无论如何,我可以告诉CSS框架使用1.3 jquery,没有使用noconflict模式修改该框架的js文件,并将该框架的js文件中每次出现的$符号更改为$ j(假设我已创建此变量$j = noconflict())?

1 个答案:

答案 0 :(得分:1)

如果CSS框架是半正确编写的,你可以这样做:

<script src="jquery-1.3.js"></script>
<script src="the-css-framework.js"</script>
<script>
var jq1_3 = jQuery.noConflict();
</script>
<script src="jquery-up-to-date.js"></script>

CSS框架将(如果它被正确编写)获取当时版本的jQuery并在其代码中使用它。如果您需要在 代码中使用它,则可以使用jq1_3,而不是$

以下是jQuery 1.11的示例,将SimpleModal插件加载到其中,然后加载jQuery 2.2.4。我们可以将SimpleModal与jQuery 1.11一起使用,但不能与jQuery 2.2.4一起使用:

// Works
jq1_11.modal("<div>Hi there jQuery 1.11</div>");

// Fails, the plugin isn't loaded on this version
try {
  $.modal("<div>Hi there jQuery 2.2.4</div>");
} catch (e) {
  console.log("Error: " + e.message);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/simplemodal/1.4.4/jquery.simplemodal.min.js"></script>
<script>
var jq1_11 = jQuery.noConflict();
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.js"></script>

但这是解决方法。修复是不花时间处理加载jQuery原因的多个副本的问题,而是花时间标准化和更新各种库以使用单个,最新版本的jQuery。有时这在短期内是不可能的,你必须解决问题,但它应该是主要目标。