0

所以我的目标是能够使用我创建的自定义复选框来切换输入。现在我让它工作了,但是,它只将类添加到第一个孩子(选项 1)

见下图 在 此处输入图像描述

当我单击选项 2 和 3 时,仍会显示默认复选框

在此处输入图像描述

我尝试过使用 document.querySelectorAll 但这不起作用。

这是 Codepen codepen.io/Brushel/pen/QqLgyZ 的链接

这是代码:

checkbox = document.getElementById('checkbox')

checkbox.addEventListener 'click', (event) ->
  event.preventDefault()
  document.querySelector('input').classList.toggle 'checkmark'
  
  
:root {
  --main-color: seagreen;
  --secondary-color: white;
}

body {
  background: var(--secondary-color);
  display: flex;
  justify-content: center;
}

ul {
  list-style: none;
  font-size: 1em;
}

.checkmark {
  display: inline-block;
    &:after {
      content: '';
      display: block;
      width: 6px;
      height: 12px;
      border: solid seagreen;
      border-width: 0 4px 4px 0;
      transform: rotate(45deg);
    }
}
%body
  %ul
    %li
      %input#checkbox(type="checkbox")/
      %label(for="checkbox") Option 1
    %li
      %input#checkbox(type="checkbox")/
      %label(for="checkbox") Option 2
    %li
      %input#checkbox(type="checkbox")/
      %label(for="checkbox") Option 3

4

1 回答 1

0

首先,一个 Id 是一个唯一的Id实体,你想将一个类应用到你的复选框或通过它们的类型或其他一些对选择多个有用的类似方法来选择它们 ( querySelectorAll)

 const checkboxHandler = checkbox => {
    checkbox.addEventListener('click', event => {
      event.preventDefault();
      checkbox.classList.toggle('checkmark');
    })
 };

 let checkboxes = document.querySelectorAll('.checkbox')
 checkboxes.forEach(checkboxHandler);
  • 按分隔符选择所有复选框
  • 遍历复选框
  • 在每次迭代中,您将应用一个点击处理程序
  • 在点击处理程序内部是您设置所需操作的地方。
于 2017-09-11T17:58:24.743 回答