使用不同版本的jQuery

时间:2017-10-06 12:42:59

标签: javascript jquery jquery-ui jquery-ui-datepicker

用例

我在jstree和jquery-ui datepicker之间发生了冲突。

我正在尝试在AJAX请求之后对DOM中注入的输入使用jquery-ui-datepicker。

我正在使用jsTree 3.3,它使用jQuery 3.1.1和jQueryUI v1.12.1,它使用jQuery 1.12.4。 问题

当我尝试调用$('#datepicker').datepicker()时,它会抛出TypeError

  

(...)。datepicker不是函数

到目前为止我尝试了什么

根据许多其他主题,包括以下内容:

datepicker和jstree或multipul

之间的冲突

将datepicker()放在动态创建的元素上 - JQuery / JQueryUI

我的代码如下:

HTML:

<script src="{% static 'Syc/js/jquery.js' %}"></script>
<script src="{% static 'Syc/js/jquery-old.js' %}"></script> <!-- version1.12.14-->
<script src="{% static 'Syc/js/jquery-ui/jquery-ui.js' %}"></script>
<script src="{% static 'Syc/Jstree/dist/jstree.min.js' %}"></script>

使用Javascript:

$(document).on('focus', "[id^='Date']", function () {
var jQ = jQuery.noConflict(true);
jQ.getScript('path/jquery-old.js', function () {
    jQ(function () {
        jQ(this).datepicker();
    })
});

上面的代码当前放在了在DOM中注入输入的函数的成功回调中。

这是我的JS的最高级版本,我尝试过没有getScript,我试图在创建jstree对象之前/之后放置它。我不知道我错过了什么,或者让datepicker()工作的正确方法。

非常感谢您的任何帮助!

其他信息

我正在使用Django Framework开发Web应用程序。 $(“#datepicker”)。datepicker()在我不使用jstree的视图中工作得很好,所以根据我读过的内容,我很确定它是两个插件之间的混淆,很可能与jQuery版本有关。 / p>

2 个答案:

答案 0 :(得分:1)

你说&#34; jQueryUI v1.12.1使用jQuery 1.12.4&#34; 。你在什么基础上决定了这个要求?

http://jqueryui.com/download/只是列出了UI 1.12.1的下载,如下所示:

  

1.12.1(稳定,对于jQuery1.7 +)需要jquery 1.7或更高版本。

确认http://api.jqueryui.com/非常明确地说明

  

jQuery UI 1.12支持jQuery 1.7及更新版本。

除最低要求外,未提及任何特定版本。没有理由你不能使用3.x。正如您所发现的那样,在您的页面中拥有多个版本的jQuery(甚至是同一版本的多个副本)是一个麻烦的方法。

要解决您的问题,您只需从项目中完全删除jquery 1.12.4。

答案 1 :(得分:0)

看看jQuery-migrate

它恢复了在较新版本的jQuery中删除的API。

在您的网页中,在jQuery的脚本标记之后加载插件,例如:

gdb remote

查看GitHub上的documentation以获取更多信息。

希望这有帮助!