Javascript 使用不同版本的jQuery 用例

Javascript 使用不同版本的jQuery 用例,javascript,jquery,jquery-ui,jquery-ui-datepicker,Javascript,Jquery,Jquery Ui,Jquery Ui Datepicker,我发现jstree和jQueryUIDatePicker之间存在冲突 我尝试在AJAX请求后对DOM中注入的输入使用jQueryUIDatePicker 我使用的是JStree3.3,它使用jQuery3.1.1和jQueryUI v1.12.1,它使用jQuery1.12.4。 发行 当我试图调用$'datepicker'。datepicker时,它抛出一个类型错误 ..日期选择器不是一个函数 到目前为止我都试过了 根据许多其他主题,包括以下两个主题: datepicker与jstree或mu

我发现jstree和jQueryUIDatePicker之间存在冲突

我尝试在AJAX请求后对DOM中注入的输入使用jQueryUIDatePicker

我使用的是JStree3.3,它使用jQuery3.1.1和jQueryUI v1.12.1,它使用jQuery1.12.4。 发行

当我试图调用$'datepicker'。datepicker时,它抛出一个类型错误

..日期选择器不是一个函数

到目前为止我都试过了 根据许多其他主题,包括以下两个主题:

datepicker与jstree或multipul之间的冲突

在动态创建的元素上放置datepicker-JQuery/JQueryUI

我的代码如下所示:

HTML:

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

这是我的JS的最高级版本,我尝试过不使用getScript,我尝试将它放在jstree对象创建之前/之后。我不知道我遗漏了什么,也不知道怎样才能让这个日期选择器工作

非常感谢您的帮助

附加信息 我正在使用Django框架开发Web应用程序$datepicker.datepicker在我不使用jstree的视图中工作得很好,所以根据我读到的内容,我很确定这是两个插件之间的冲突,很可能与jQuery版本有关。

看一看

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

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

<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script src="https://code.jquery.com/jquery-migrate-3.0.1.js"></script>
有关更多信息,请查看GitHub上的

希望这有帮助

您说的是使用jquery1.12.4的jqueryuiv1.12.1。你是根据什么决定这个要求的

简单列出UI 1.12.1的下载,如下所示:

1.12.1稳定,因为jQuery1.7+需要jQuery1.7或更高版本

为了证实,声明非常清楚

jQueryUI1.12支持jQuery1.7及更新版本

除最低要求外,未提及具体版本。没有理由不使用3.x。正如您所发现的,页面中有多个jQuery版本,甚至是同一版本的多个副本都会带来麻烦


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

为什么需要两个版本的jquery?getScript函数将无法确保库绑定到正确的版本。它只在dom中添加和加载脚本。实际上我不需要它,但我在jQuery ui/external/jQuery.js中找到了jQuery 1.12.4文件,所以我认为它是插件使用的版本。我还试图删除它或用我的jquery 3.x文件替换它,但它没有解决问题。这不是必需的。正如网站上明确指出的那样,jqueryui可以很好地与较新的jQuery配合使用。OP的问题是由于页面上同时有两个版本而产生冲突。我不想使用更多的外部插件,我想我可以用一种更合适的方式解决这个问题。事实上,我在jQuery ui/external/jQuery.js中找到了jQuery 1.12.4文件,我已经尝试删除它并用3.x文件替换它。同样在面对这个问题之前,我没有在脚本声明中包含old-jquery.js。是的,但这正是它所打包的内容。正如文档中明确指出的,您不需要使用该版本。你说我试图删除它,并用3.x文件替换它……但事实并非如此。不要用任何东西代替它。只需使用Syc/js/jquery.js,我假设它包含3.1.1版?并在整个页面中使用一次。正如我上面提到的,不要加载多个副本,即使它们是同一版本。一旦您确认只有一个jQuery副本加载到页面中,那么如果您仍然有问题,我们可以再次详细查看它。好的,这正是我在第一个地方所做的,您是对的,Syc/js/jQuery.js是3.1.1,但是我得到了类型错误日期选择器不是一个函数。正如您在其他信息中所看到的,它只发生在我同时拥有jstree和jQueryUI的模板中。我删除了jquery-old.js导入并将jquery ui文件夹返回到其原始状态,但无法使其正常工作。顺便说一句,如果这有帮助,其他jquery ui工具(如对话框)在此视图中也可以正常工作。在运行.datepicker命令之前,元素$'datepicker'是否存在?在运行.datepicker命令之前是否加载了jquery ui文件?如果临时从这些模板中删除jstree,datepicker是否工作?
$(document).on('focus', "[id^='Date']", function () {
var jQ = jQuery.noConflict(true);
jQ.getScript('path/jquery-old.js', function () {
    jQ(function () {
        jQ(this).datepicker();
    })
});
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script src="https://code.jquery.com/jquery-migrate-3.0.1.js"></script>