在我的 django 项目中,我将根据 django 管理添加/编辑表单上另一个字段中的事件来清理字段值。 我在 admin/change_form.html 中插入我对 js 的调用:
{{ block.super }}
<script type="text/javascript" src="{% static 'js/admin.js' %}"></script>
{{ media }}
{% endblock %}
然后是我的 admin.js:
(function($) {
$(document).ready(function() {
$("select[name='main_id']").change(function() {
$("select['test_id']").val('');
});
});
})(django.jQuery);
但是当我在控制台中打开 django-admin 页面时,我得到:
Uncaught TypeError: $ is not a function
在“$(document).ready(function() {”行上。
有人可以帮我解决这个错误吗?
提前非常感谢
最佳答案
不要添加 jQuery 的第二个副本,只需确保在定义 djagno.jQuery
后执行您的 JS。
您可以通过简单地将 JS 封装在一个事件监听器中来解决此问题,该事件监听器会在 window
加载时触发。
window.addEventListener("load", function() {
(function($) {
$("select[name='main_id']").change(function() {
$("select['test_id']").val('');
});
})(django.jQuery);
});
正如您可能已经猜到的那样,当窗口
加载时,会触发“load”
事件。 window.addEventListener()
只是注册一个事件监听器,该监听器在事件触发时执行匿名函数的内容。这会在所有资源加载后发生。
因为 window
"load"
事件将在 $(document).ready()
之后触发,所以你不再需要它了。
关于jquery - django.jQuery $ 不是函数消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58087470/