我在 Django 管理基本模板中包含了几个第三方 jQuery 插件,这些插件假定“$”可用。
对于我自己的代码,我一直很乐意这样做
(function($) {
my_code = 'here';
})(django.jQuery);
但是我如何向外部文件中其他人的代码提供“$”?
<script src="{{ STATIC_URL }}js/jquery.json-2.2.min.js" type="text/javascript"></script>
抱怨“$”未定义。我试过把
<script type="text/javascript">var $ = django.jQuery;</script>
在该外部引用之前,但无济于事(顺便说一句,为什么?我知道加载是并发发生的,但是执行?我可以在定义它后立即使用该“$”。)。
我对 Django admin 提供的 jQuery 版本很满意,并且真的不想加载另一个版本。我也不想编辑别人的插件,使其以上面的“$”重新定义开头。
编辑:我也不想像我自己的代码一样包装它,我只是根本不想触及这些文件。
我真的必须诉诸 $.getScript() -http://api.jquery.com/jQuery.getScript http://api.jquery.com/jQuery.getScript- 进入我的匿名函数来加载此类文件?
编辑:在实际查看该外部文件 jquery.json-2.2.min.js 后,我发现它已经被包装到一个假设“jQuery”可用而不是“$”的函数中。插入后
var
jQuery = django.jQuery;
在外部参考之前,它工作得很好。但这真的应该这样做吗?
覆盖 django 的静态文件admin/js/jquery.init.js
通过在应用程序的 staticfiles 目录中创建具有相同名称和路径的文件。
原来的内容是这样的
/* Puts the included jQuery into our own namespace using noConflict and passing
* it 'true'. This ensures that the included jQuery doesn't pollute the global
* namespace (i.e. this preserves pre-existing values for both window.$ and
* window.jQuery).
*/
var django = {
"jQuery": jQuery.noConflict(true)
};
只需删除.noConflict(true)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)