DOM仅注册一个单击事件删除元素

PHP新手

我有一个简单的表单,我想删除我可能不需要的DOM元素(例如,表单上的问题)。

这仅适用于第一个元素。删除(单击)第一个元素后,它将被删除,但随后的所有单击都不会被注册。

控制台也将仅显示第一个“单击”。

我正在使用把手在循环中生成某些DOM元素,不确定是否会真正引起问题,因为我能够在chrome inspector中看到这些元素。

JS功能

let allItems = document.getElementById("main");

allItems.addEventListener("click",function(e){
    console.log("click");
      e.target.parentElement.remove();
      e.preventDefault();

  });

HTML-把手

 {{#each all}}
        <div id="main">
            <p class="delete">&#x2718;</p>
            <span class="select">
                <select>
                    <option value="0"></option>Selection</option>
                </select>
            </span>
        </div>
  {{/each}}
r3wt

您在这里遇到两个问题:

  1. 您正在将相同的ID分配给多个元素,这是无效的html,因为ID应该是唯一的。

  2. 这是javascript中非常常见的问题。该代码仅将事件侦听器绑定到代码运行时页面中存在的元素上。任何新添加的元素都不会出现。在这种情况下,解决方案是从元素上删除事件侦听器,并在文档上添加单个侦听器以供单击,然后检查事件目标以查看它是否是您想要的节点之一。

我建议从元素中删除main的ID,并为它们提供相同的类,即class="removable-form-item",然后使用全局点击侦听器,如下所示:

document.body.addEventListener('click',function(event){
    if(event.target.classList.contains("removable-form-item")){
        //got a click on our target name
        // your code to remove the item here
        e.target.parentElement.remove();
        e.preventDefault();
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“ deleteAll”方法仅删除一个事件

来自分类Dev

单击一个元素并将其从数组中删除

来自分类Dev

注册一个按钮,单击if语句

来自分类Dev

隐藏一个元素但不隐藏其他元素的滚动条(单击/事件时)

来自分类Dev

jQuery-仅胺化单击的元素并隐藏另一个元素

来自分类Dev

为什么单击一个元素来触发事件会阻止另一个元素工作?

来自分类Dev

如何仅删除所选元素中的一个元素,而保留另一个元素?

来自分类Dev

是否有一个DOM函数删除两个元素之间的所有元素?

来自分类Dev

单击元素时添加一个类,单击其他位置时将其删除

来自分类Dev

如何仅通过一个按钮单击事件即可隐藏或显示图像

来自分类Dev

单击事件仅适用于最后一个标记

来自分类Dev

一个元素上有2次单击事件,只需运行一次

来自分类Dev

添加第一个元素或删除最后一个元素时触发事件的设置

来自分类Dev

仅调用一个Paint事件

来自分类Dev

从一个表中删除记录并将其更新到另一个表的单击事件

来自分类Dev

没有第一个表 td 的嵌套表 td 元素的单击事件

来自分类Dev

您如何模拟拖动事件(单击一个按钮即可删除)?

来自分类Dev

在jQuery中重复单击事件而不删除上一个Click效果

来自分类Dev

Zclip仅打开下一个元素中单击的类/副本

来自分类Dev

onBindViewHolder 仅针对我在 recyclerview 中单击的第一个元素调用

来自分类Dev

Snap.svg —单击元素之一时删除一个对象

来自分类Dev

Snap.svg —单击元素之一时删除一个对象

来自分类Dev

Click事件仅影响第一个元素jquery

来自分类Dev

类上的jQuery click事件仅触发第一个元素

来自分类Dev

jQuery-事件委托仅针对第一个新创建的元素

来自分类Dev

javascript click事件仅适用于WebGrid MVC中的第一个元素

来自分类Dev

使用jQuery“ .off”仅删除一个事件处理程序

来自分类Dev

onClick事件-一次仅一个事件

来自分类Dev

如何标记仅在另一个事件之后出现的DOM中的元素?

Related 相关文章

  1. 1

    “ deleteAll”方法仅删除一个事件

  2. 2

    单击一个元素并将其从数组中删除

  3. 3

    注册一个按钮,单击if语句

  4. 4

    隐藏一个元素但不隐藏其他元素的滚动条(单击/事件时)

  5. 5

    jQuery-仅胺化单击的元素并隐藏另一个元素

  6. 6

    为什么单击一个元素来触发事件会阻止另一个元素工作?

  7. 7

    如何仅删除所选元素中的一个元素,而保留另一个元素?

  8. 8

    是否有一个DOM函数删除两个元素之间的所有元素?

  9. 9

    单击元素时添加一个类,单击其他位置时将其删除

  10. 10

    如何仅通过一个按钮单击事件即可隐藏或显示图像

  11. 11

    单击事件仅适用于最后一个标记

  12. 12

    一个元素上有2次单击事件,只需运行一次

  13. 13

    添加第一个元素或删除最后一个元素时触发事件的设置

  14. 14

    仅调用一个Paint事件

  15. 15

    从一个表中删除记录并将其更新到另一个表的单击事件

  16. 16

    没有第一个表 td 的嵌套表 td 元素的单击事件

  17. 17

    您如何模拟拖动事件(单击一个按钮即可删除)?

  18. 18

    在jQuery中重复单击事件而不删除上一个Click效果

  19. 19

    Zclip仅打开下一个元素中单击的类/副本

  20. 20

    onBindViewHolder 仅针对我在 recyclerview 中单击的第一个元素调用

  21. 21

    Snap.svg —单击元素之一时删除一个对象

  22. 22

    Snap.svg —单击元素之一时删除一个对象

  23. 23

    Click事件仅影响第一个元素jquery

  24. 24

    类上的jQuery click事件仅触发第一个元素

  25. 25

    jQuery-事件委托仅针对第一个新创建的元素

  26. 26

    javascript click事件仅适用于WebGrid MVC中的第一个元素

  27. 27

    使用jQuery“ .off”仅删除一个事件处理程序

  28. 28

    onClick事件-一次仅一个事件

  29. 29

    如何标记仅在另一个事件之后出现的DOM中的元素?

热门标签

归档