如何从JavaScript中的多个元素中删除事件侦听器?

seanrs97

我正在玩一种纸牌游戏,用户必须从4张纸牌中选择一张纸牌。如果是A牌,那么他们赢了,否则输了。但是在单击第一张卡之后,从卡组中删除click的事件侦听器时遇到了一些麻烦。

for(var i = 0; i < card.length; i++)
{
  card[i].addEventListener("click",display);
}

function display()
{
   this.setAttribute("src","CardImages/" + deck[this.id] + ".jpg");
   this.setAttribute("class","highlight");
   if(firstGo == 0)
   {
     firstGo++;
     firstCard = this;
     this.removeEventListener("click",display);
     console.log("card" + deck[this.id]);
   }
   else
   {
     alert("You've already selected a card");
     this.removeEventListener("click",display);
   }
}
秋千

您正在使用循环添加点击事件,因为您有多张卡片。

for(var i = 0; i < card.length; i++) {
    card[i].addEventListener("click", display);
}

但您正在使用删除事件监听器

this.removeEventListener("click",display);

只会删除您点击的即时贴上的监听器。如果您也要删除其他卡上的侦听器,则还应该循环删除它们。

function display() {
    this.setAttribute("src","CardImages/" + deck[this.id] + ".jpg");
    this.setAttribute("class","highlight");
    if (firstGo == 0) {
        firstGo++;
        firstCard = this;
        // this.removeEventListener("click",display);
        for (var i = 0; i < card.length; i++) {
            card[i].removeEventListener("click", display);
        }
        console.log("card" + deck[this.id]);
    } else {
        alert("You've already selected a card");
        // this.removeEventListener("click",display);
        for (var i = 0; i < card.length; i++) {
            card[i].removeEventListener("click", display);
        }
    }
}

这是一个工作示例。

var cards = document.getElementsByClassName("card");

for (var i = 0; i < cards.length; i++) {
  cards[i].addEventListener("click", display);
}

function display() {
  this.classList.add("highlight");
  for (var i = 0; i < cards.length; i++) {
    cards[i].removeEventListener("click", display);
  }
}
.card {
  float: left;
  padding: 50px 40px;
  border: 1px solid rgba(0,0,0,.2);
  margin: 5px;
  background: white;
}
.card:hover {
  border: 1px solid rgba(0,0,255,.4);
}
.card.highlight {
  border: 1px solid rgba(0,200,0,.5);
}
<div class="card">1</div>
<div class="card">2</div>
<div class="card">3</div>
<div class="card">4</div>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从reactjs中的文档中删除事件侦听器

来自分类Dev

删除for循环javascript中的事件侦听器

来自分类Dev

如何从react.js元素中删除特定的事件侦听器

来自分类Dev

如何删除Aurelia中的事件侦听器?

来自分类Dev

如何在EaselJS对象中删除事件侦听器

来自分类Dev

如何在 JavaScript 中停用 beforeunload 事件侦听器

来自分类Dev

如何在一个元素中添加多个带有选择器的事件侦听器?

来自分类Dev

如何从父级中删除jQuery事件侦听器而不删除类似的侦听器?

来自分类Dev

如何使用 for 循环删除多个事件侦听器?

来自分类Dev

如何正确删除多个事件侦听器?

来自分类Dev

当元素从 DOM 中删除时,Angularjs 会删除事件侦听器

来自分类Dev

将事件侦听器添加到js中的多个选择元素

来自分类Dev

PHP事件侦听器中的多个回显的删除-编辑按钮

来自分类Dev

如何从第三方JavaScript跟踪和分析中删除或阻止事件侦听器?

来自分类Dev

清理自定义元素中的事件侦听器

来自分类Dev

如何在Polymer中的自定义元素属性中添加事件侦听器?

来自分类Dev

删除 EmberJS 中的特定事件侦听器

来自分类Dev

Javascript删除“焦点”事件侦听器

来自分类Dev

如何在Firefox调试器中删除事件侦听器?

来自分类Dev

jQuery中的多个链接的.on('click')事件侦听器

来自分类Dev

将事件侦听器添加到香草javascript中尚不存在的元素

来自分类Dev

将事件侦听器添加到使用Javascript从API捕获的动态生成的元素中

来自分类Dev

在JavaScript中带多个事件侦听器的for语句外的未定义变量

来自分类Dev

在addEventListener中粘贴参数的元素上删除侦听器

来自分类Dev

如何在聚合物中的内容元素上设置单击事件侦听器?

来自分类Dev

如何将事件侦听器添加到数组中的每个元素?

来自分类Dev

如何在尚未在 DOM [no-jQuery] 中的元素上添加事件侦听器?

来自分类Dev

如何在Java脚本中删除“ mouseup”事件侦听器

来自分类Dev

如何在Java脚本中删除“ mouseup”事件侦听器

Related 相关文章

  1. 1

    如何从reactjs中的文档中删除事件侦听器

  2. 2

    删除for循环javascript中的事件侦听器

  3. 3

    如何从react.js元素中删除特定的事件侦听器

  4. 4

    如何删除Aurelia中的事件侦听器?

  5. 5

    如何在EaselJS对象中删除事件侦听器

  6. 6

    如何在 JavaScript 中停用 beforeunload 事件侦听器

  7. 7

    如何在一个元素中添加多个带有选择器的事件侦听器?

  8. 8

    如何从父级中删除jQuery事件侦听器而不删除类似的侦听器?

  9. 9

    如何使用 for 循环删除多个事件侦听器?

  10. 10

    如何正确删除多个事件侦听器?

  11. 11

    当元素从 DOM 中删除时,Angularjs 会删除事件侦听器

  12. 12

    将事件侦听器添加到js中的多个选择元素

  13. 13

    PHP事件侦听器中的多个回显的删除-编辑按钮

  14. 14

    如何从第三方JavaScript跟踪和分析中删除或阻止事件侦听器?

  15. 15

    清理自定义元素中的事件侦听器

  16. 16

    如何在Polymer中的自定义元素属性中添加事件侦听器?

  17. 17

    删除 EmberJS 中的特定事件侦听器

  18. 18

    Javascript删除“焦点”事件侦听器

  19. 19

    如何在Firefox调试器中删除事件侦听器?

  20. 20

    jQuery中的多个链接的.on('click')事件侦听器

  21. 21

    将事件侦听器添加到香草javascript中尚不存在的元素

  22. 22

    将事件侦听器添加到使用Javascript从API捕获的动态生成的元素中

  23. 23

    在JavaScript中带多个事件侦听器的for语句外的未定义变量

  24. 24

    在addEventListener中粘贴参数的元素上删除侦听器

  25. 25

    如何在聚合物中的内容元素上设置单击事件侦听器?

  26. 26

    如何将事件侦听器添加到数组中的每个元素?

  27. 27

    如何在尚未在 DOM [no-jQuery] 中的元素上添加事件侦听器?

  28. 28

    如何在Java脚本中删除“ mouseup”事件侦听器

  29. 29

    如何在Java脚本中删除“ mouseup”事件侦听器

热门标签

归档