我在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>
答案 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中删除的API。
在您的网页中,在jQuery的脚本标记之后加载插件,例如:
gdb remote
查看GitHub上的documentation以获取更多信息。
希望这有帮助!