【问题标题】:How do I close each instance of the same div class one a time using Javascript如何使用 Javascript 一次关闭同一个 div 类的每个实例
【发布时间】:2019-07-11 21:56:42
【问题描述】:

我要做的非常简单:每次单击关闭按钮时关闭 div 的每个实例。我得到的只是第一个点击的实例关闭,但其余的不能。

我必须说我来自 Python,我对 Javascript 不是很熟悉。我认为有某种方式使用 ID 而不是类?这是我的 html(带有 Jinja)代码,用于动态创建单击时要关闭的对象:

{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages%}   
<div class="notification {{ category }} is-bold">
<button class="delete"></button>
{{ message }}
 </div>
  {% endfor %}
  {% endif %}
  {% endwith %}

这是我的 Javascript 代码:

// notification remover
document.addEventListener('DOMContentLoaded', () => {

(document.querySelectorAll('.notification .delete') || []).forEach(($delete) => {
$notification = $delete.parentNode;
$delete.addEventListener('click', () => {
        $notification.parentNode.removeChild($notification);
});
});
});

生成的html示例:

<div class="notification is-info is-bold">
<button class="delete"></button>

<div class="notification is-info is-bold">
<button class="delete"></button>

<div class="notification is-info is-bold">
<button class="delete"></button>

【问题讨论】:

    标签: javascript flask dom-events bulma


    【解决方案1】:

    试试这个:

    document.addEventListener('DOMContentLoaded', () => {
    
      (document.querySelectorAll('.notification .delete') || []).forEach(($delete) => {
        $delete.addEventListener('click', (event) => {
          event.target.parentNode.remove();
        });
      });
    });
    

    您的代码的问题是您将 $notification 设置为最后一个,因此当 eventListener 触发 $notification 时始终是最后一个。

    【讨论】:

    • 非常感谢!这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 2023-01-29
    • 2016-12-02
    相关资源
    最近更新 更多