如何在Django中通过jQuery跟踪模板中自动生成的HTML元素的点击事件

Posted

技术标签:

【中文标题】如何在Django中通过jQuery跟踪模板中自动生成的HTML元素的点击事件【英文标题】:How to track click event on auto generated HTML elements in Template via jQuery in Django 【发布时间】:2020-08-12 10:46:17 【问题描述】:

我有一个模板嵌套在其中的视图,最终模板有一个带有点赞和评论按钮/锚标签的帖子。

帖子的数量不是固定的,而是动态填充的,并且喜欢和 cmet 与单个帖子相关联。

最后一个子模板检索生成的帖子。问题在于 sn-p:

---under dynamic loop---
<a href="" class="like" data-catid=" post.id ">Like</a>
---under dynamic loop---

上面的sn-p是jQuery调用的:

<script>
$('.like').on("click", function (event)
        event.preventDefault();
        var postid = $(this).attr("data-catid");
        alert(postid);
        $.ajax(
.
.some Ajax stuff...
.
</script>

现在的问题是,每当我点击任何帖子的任何点赞时,我都会收到与帖子数量一样多的警报。这是因为帖子的数量不确定并且是动态生成的。因此,对于每篇文章,我都有一个生成的带有“like”类的锚标记。请指导如何在用户单击的确切链接上仅获取单个事件。

如果您也想了解模型,请参考我之前的帖子:Django Dynamic Object Filtering issue in Template

【问题讨论】:

当你使用$('.like').off("click").on("click", function (event) ... );时会发生什么? @palaѕн 做到了。同样的事情发生了。没有变化。 【参考方案1】:

我通过将所有 jQuery 内容提升到一个模板级别来解决这个问题,即到上述子模板的父模板。 除了我必须使用 Django 文档中所述的 CSRF Coo​​kie 获取和发送 CSRF 请求函数的形式。

【讨论】:

以上是关于如何在Django中通过jQuery跟踪模板中自动生成的HTML元素的点击事件的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 模板中通过 Item.objects.all 显示图像

在 Django 模板中通过变量访问字典?

django 模板中通过变量替代key取字典内容

在 javascript 中通过 django 模板检索 json 数据时出错,在参数列表后给出 Uncaught SyntaxError: missing )

在 python 中通过 django-crispy-forms 渲染表单

Django 模板:如何自动刷新 jQuery 数据表?