具有多个版本的jQuery

时间:2016-12-08 20:09:21

标签: javascript jquery twitter-bootstrap

我正在研究的项目有几个版本的jQuery正在使用。我包括bootstrap-datetimepicker模块,它似乎自动与jQuery的旧版本之一关联,我不知道为什么。这就是我所拥有的

<script src="https://code.jquery.com/jquery-2.2.3.min.js" integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo=" crossorigin="anonymous"></script>

<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js" integrity="sha256-xNjb53/rY+WmG+4L6tTl9m6PpqknWZvRt0rO1SRnJzw=" crossorigin="anonymous"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>

<script type="text/javascript" src="js/moment.js"></script>
<script type="text/javascript" src="js/bootstrap-datetimepicker.min.js"></script>

<script src="https://code.jquery.com/jquery-1.8.2.min.js" integrity="sha256-9VTS8JJyxvcUR+v+RTLTsd0ZWbzmafmlzMmeZO9RFyk=" crossorigin="anonymous"></script>

<script type='text/javascript'>window.jq182=$.noConflict();</script>

如果我尝试使用$("#something").highcharts(),我会

  

$(...)。highcharts不是函数(...)

但如果我使用jq182("#something").highcharts()就可以了。这是为什么?我认为它会与当前版本相关联。

1 个答案:

答案 0 :(得分:0)

  

如果我尝试使用$(&#34;#something&#34;)。highcharts()我得到$(...)。highcharts不是函数(...),但如果我使用jq182(&# 34; #thing&#34;)。highcharts()它的工作原理。这是为什么?

它符合您拥有的jQuery库的顺序:

首先包括jQuery V2.2.3,在版本V1.8.2之后,$ sign被分配给V2.2.3而不是其他版本。因此,如果您的高级图书库包含在两个jquery库之后:

$(function () {
  $("#something").highcharts();
});

其中,文档就绪是一个jQuery V2.2.3函数,但你的highcharts是用V1.8.2版本创建的。

您可以自己测试,只需在准备好文档时和在高级图表功能中添加simbol $的控制台日志消息。

为避免这种情况,您可以:

  • 使用noConflict
  • 在包含jQuery V1.8.2
  • 之前包含highcharts
  • 而不是使用符号$,您可以直接使用 jQuery
  • 这个词

正如你所说,这是使用库的一种混淆方式。

  

来自 Highcharts 源代码:

     

if(win.jQuery){

   win.jQuery.fn.highcharts = function() {

以便根据您使用的顺序查看使用的jQuery库的版本。