【问题标题】:on(click) event delegation .forEach Array.from only shows the clicked elementon(click) 事件委托 .forEach Array.from 只显示被点击的元素
【发布时间】:2021-09-17 15:33:42
【问题描述】:

我正在尝试在用户单击动态 html 元素 (span) 时更改它们的背景颜色。

function showQuestion(){
    for(let i = 0; i < QuesPartA.length; i++){
      $(".questionBox").append('<div class="Question">Number '+ parseInt(i+1) +'</div>');
      QuesPartA[i]['option'].forEach(option => {
          $(".questionBox").append('<span class="pilihan">'+option +' </span><br>');  
      });
  } 

$(".secondBox").append('<a href="Listening Part A.html" class="btnToPartB">Continue to Part B</a>');
  };

$(".questionBox").on("click", "span.pilihan", function() {
  Array.from(document.getElementsByClassName("pilihan"))
  .forEach((element) => element.style.backgroundColor = "red");
    });

但是,我只想要更改颜色的单击,而不是所有span.pilihan,但我上面的代码将颜色全部更改为红色。

有什么想法吗?

【问题讨论】:

  • “但我上面的代码将颜色全部更改为红色” - 因为这正是你告诉脚本要做的... -> Array.from(...).forEach(...)
  • 任何想法如何只更改点击的那一项? @安德烈亚斯
  • 当然。如果您查看我在第二条评论中添加的链接,您也会得到一个。

标签: javascript jquery foreach event-delegation


【解决方案1】:

这样写:

 $(".questionBox").on("click", ".pilihan", function() {
  $(this).css("background", "red");
});

【讨论】:

    猜你喜欢
    • 2014-12-26
    • 2012-02-15
    • 2013-08-01
    • 2016-03-27
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多