繁体   English   中英

使用 Django 中的按钮关闭所有 forms

[英]Close all forms with a button in Django

我在 Django 3.0 中构建了一个线程评论系统(类似 Reddit)
一条评论可以有尽可能多的回复。 对于每条评论,其下方都会显示一个回复表单。 现在,如果我不隐藏 forms,页面看起来很糟糕,文本区域杂乱无章。

我需要以下内容:“回复”按钮,单击可以显示/隐藏回复表单。

这是我尝试过的:

  1. 向 forms 添加了 class .replyForm
    在隐藏按钮中添加了 class .hideBtn
    二手 JQuery:
  $(".hideBtn").click(function(){
        $(".replyForm").toggle();
    });

现在,这工作正常,但单击回复按钮会同时打开所有 forms。
这是预期的,因为属于每种形式的 class 是相同的。

  1. 使用 Django 的模板标签,我设法使每个表单和按钮的 id 都是唯一的。
    示例: id = "replyForm{{comment.id}}"如果comment.id = 123 ,则呈现为replyForm123
    但我无法以任何有效的方式使用它。
    我无法访问 for 循环(显示评论)之外的 id。
    我尝试在循环中添加 JQuery 脚本,并创建了 2 个变量,一个用于按钮的 id,另一个用于表单的 id。
    但是随着循环的执行,变量会相应地改变,最后它们只存储最后一条评论的 id,使所有其他切换按钮无用。

我觉得我把事情复杂化了太多,我对 JS 和 JQuery 很陌生,我之所以使用它们,是因为我找不到基于 pythonic/django 的方法来执行此操作。

有没有更简单、更优雅的方法来做到这一点? 任何帮助表示赞赏

编辑1:
我找到了一个非常简单的解决方案,使用Bootstrap 4 的崩溃 class ,但仍然想知道 JQuery 这样做的方式。

尝试这个:

$(".replyForm").click(function(){
    $(this).toggle();
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM