Django Admin集成ImageViewer插件报错:$ is not a function
解决Django Admin中ImageViewer插件的
$ is not a function错误 这个问题的核心原因是Django Admin默认启用了jQuery的noConflict模式——为了避免和其他JS库冲突,它会释放全局的$变量,所以直接使用$就会抛出"$ is not a function"的错误。下面是具体的修复步骤:
1. 修改自定义脚本my_code.js
把你当前的代码:
$(function () { $('.pannable-image').ImageViewer(); });
替换成以下两种写法之一:
写法一:使用jQuery替代$,并利用其DOM就绪回调
jQuery(function() { jQuery('.pannable-image').ImageViewer(); });
写法二:通过自执行函数重新映射$为jQuery(更符合习惯的写法)
(function($) { $(function() { $('.pannable-image').ImageViewer(); }); })(jQuery);
这种写法在函数内部可以正常使用$,同时不会影响全局环境。
2. 验证插件本身的兼容性
你提到的ImageViewer插件最后一行是}((window.jQuery), window, document));,说明它已经正确接收了window.jQuery作为参数,插件内部的$应该是正常工作的,所以主要问题还是出在你自己的初始化代码上。
额外说明
关于你提到的my_code.js加载在图片HTML之前的问题:使用$(function() {...})(或者上面的jQuery(function() {...}))已经处理了DOM就绪的问题,所以脚本加载顺序不会影响元素的选择,这个是没问题的。
内容的提问来源于stack exchange,提问作者user1045680
相关产品推荐
相关产品推荐

