jquery - django.jQuery $ 不是函数消息

标签 jquery django python-3.x django-admin

在我的 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/

相关文章:

php - 子域更改图像路径

javascript - 有没有办法识别用户如何阅读帖子

javascript - 从容器继承高度?

python - 将子列表放置到其他子列表中

python - 修改QTableView PYQT5中的单元格

php不清除不同查询之间的表

python - Django 表单提交单选按钮值显示为 None

python - 为什么我的托管 Django 站点(alwaysdata)无法显示我的页面

python - Django 相当于 COUNT 和 GROUP BY

python - 用逗号分隔值