【发布时间】:2017-10-06 12:42:58
【问题描述】:
用例
我在 jstree 和 jquery-ui datepicker 之间遇到了冲突。
我正在尝试在 AJAX 请求后在 DOM 中注入的输入上使用 jquery-ui-datepicker。
我正在使用使用 jQuery 3.1.1 的 jsTree 3.3 和使用 jQuery 1.12.4 的 jQueryUI v1.12.1。 问题
当我尝试调用 $('#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 框架开发 Web 应用程序。 $("#datepicker").datepicker() 在我不使用 jstree 的视图中工作正常,所以根据我读过的内容,我很确定这是两个插件之间的冲突,很可能与 jQuery 版本有关。
【问题讨论】:
-
为什么需要 2 个版本的 jquery?
-
getScript 函数不能确保库绑定到正确的版本。它只在 dom 中添加和加载脚本。
-
我实际上不需要它,但我在 jquery-ui/external/jquery.js 中找到了 jQuery 1.12.4 文件,所以我认为它是插件使用的版本。我也尝试删除它或用我的 jquery 3.x 文件替换它,但它没有解决问题。
标签: javascript jquery jquery-ui jquery-ui-datepicker