如何在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 Cookie 获取和发送 CSRF 请求函数的形式。
【讨论】:
以上是关于如何在Django中通过jQuery跟踪模板中自动生成的HTML元素的点击事件的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 模板中通过 Item.objects.all 显示图像
在 javascript 中通过 django 模板检索 json 数据时出错,在参数列表后给出 Uncaught SyntaxError: missing )