在 django 中:使用多个插件加载 jquery 时出现问题 - 或者:如何仅加载 jQuery 一次?
Posted
技术标签:
【中文标题】在 django 中:使用多个插件加载 jquery 时出现问题 - 或者:如何仅加载 jQuery 一次?【英文标题】:In django: Problems with loading jquery with multiple plugins - or: How to load jQuery only once? 【发布时间】:2017-09-17 03:56:09 【问题描述】:我使用带有大量插件(“应用程序”)的 django (1.8.16)。有些是:
django-ckeditor==4.5.1 django-image-cropping==1.0.3 django.contrib.admin django-jquery==3.1.0我想在管理界面使用django autocomplete-light(简称dal)(3.2.1,当前版本)。现在我有以下 jquery 斗争。 dal 使用 jquery 但不加载它本身。它留给开发人员。 dal 附带一个脚本“select2.js”,在 $.select2 下注册一个函数。
现在的问题。当 ckeditor 或 image-cropping 之类的插件加载 jquery 时,函数 $.select2 不再可用。
我创建了一个bug report over at dal,但一位开发人员说我有责任先加载 jquery。
那么,我如何加载 jquery,在 dal 需要它之前加载它并且只加载一次?
【问题讨论】:
【参考方案1】:根据django-ckeditor docs:
如果您从其他来源加载 jQuery,请不要设置 [CKEDITOR_JQUERY_URL],django-ckeditor 不会尝试加载自己的 jQuery。
您应该确保将所有可以加载 jQuery 的应用程序设置为不加载它,类似于上面。然后,使用 django-jquery 加载 jquery,确保 jQuery 在控制台中可用(即尝试输入 console.log($)
以查看它是否可用)。确保将 jQuery 模板标签放在其他库加载的任何其他模板标签之上。
这应该可以解决您遇到的任何冲突。
【讨论】:
我猜你是对的。我不知道如何为管理员插件执行此操作。我会在星期一做一些研究。 @mogohdjango.contrib.admin
不加载 jQuery,所以你很清楚 :)。
@YPCruble 我认为这适用于最新版本,但不适用于 1.8。为什么 jquery 会是here?
@mogoh 你是对的,感谢更新!但是,Django 的库不会与您的库冲突,因为它是 uses the django.jQuery
namespace。如果您只想使用管理员加载的 jQuery 版本,您可以随时执行 window.$ = window.jQuery = django.jQuery;
之类的操作。但你也可以毫无问题地加载自己的 jQuery 版本。以上是关于在 django 中:使用多个插件加载 jquery 时出现问题 - 或者:如何仅加载 jQuery 一次?的主要内容,如果未能解决你的问题,请参考以下文章
结构-行为-样式-Jquery实现延迟加载特效(数据缓冲特效)