代码是这样的-

<div class="filter-box" id="categoryFilter">             
    <input type="checkbox" id="3" name="Education" value="3">
    <label for="Education">Education</label>
    <input type="checkbox" id="12" name="Employment" value="12">
    <label for="Employment">Employment</label>
    <input type="checkbox" id="5" name="Goods and Services" value="5">
    <label for="Goods and Services">Goods and Services</label>
</div>

我需要将所单击的复选框的值或ID作为目标,以便将其添加到API调用的URL字符串中.

如何确定复选框的目标,以便编写返回值的单击事件?

推荐答案

  • 标签的for应与id匹配,而不是输入的name
  • 不要过度使用数字ID,在某些时候,您的ID很有可能会重复和冲突.相反,删除idfor属性并将您的输入包装到<label>
  • 使用jQuery的"Change"事件函数回调
  • 使用.prop()可获取所需的属性值

$("#categoryFilter").on("change", ":checkbox", function() {
  const name = $(this).prop("name");
  const value = $(this).prop("value");
  const checked = $(this).prop("checked");
  console.log(`${name} ${value} ${checked}`);
});
<div class="filter-box" id="categoryFilter">
  <label>
    <input type="checkbox" name="Education" value="3">
    Education
  </label>
  <label>
    <input type="checkbox" name="Employment" value="12">
    Employment
  </label>
  <label>
    <input type="checkbox" name="Goods and Services" value="5">
    Goods and Services
  </label>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>

随着IE浏览器的消亡,以及长青浏览器跟上最新的ECMAScript好东西的步伐,jQuery现在已经不是必要的了.没有像jQuery这样的库开销的纯JavaScript方法将是:

document.querySelector("#categoryFilter").addEventListener("change", (evt) => {
  const el = evt.target.closest("[type=checkbox]");
  if ( !el ) return; // Not a checkbox
  console.log(`${el.name} ${el.value} ${el.checked}`);
});
<div class="filter-box" id="categoryFilter">
  <label>
    <input type="checkbox" name="Education" value="3">
    Education
  </label>
  <label>
    <input type="checkbox" name="Employment" value="12">
    Employment
  </label>
  <label>
    <input type="checkbox" name="Goods and Services" value="5">
    Goods and Services
  </label>
</div>

还要注意的是,上面的纯JavaScript示例使用Event delegation,类似于您在jQuery中使用$(parent).on("eventName", "dynamicChild", fn)所做的操作--这甚至适用于动态创建的CheckBox元素.

Javascript相关问答推荐

使用jsPDF添加Image JPEG将p5.js草图画布下载为PDF

使用NgDeliverentOutlet和动态内容投影的Angular 渲染组件

设置默认值后动态更新japbox或调色板

使用JavaScript重命名对象数组中的键

添加/删除时React图像上传重新渲染上传的图像

为什么JavaScript双边字符串文字插值不是二次的?

从连接字符串创建客户端时,NodeJS连接到CosmosDB失败

如何通过onClick为一组按钮分配功能;

如何修复循环HTML元素附加函数中的问题?

有什么(最佳)方法可以从模块中获取脚本模块的多姆元素吗?

微软Edge Select 间隙鼠标退出问题

TypScript界面中的Infer React子props

从实时数据库(Firebase)上的子类别读取数据

当Redux提供程序访问Reduxstore 时,可以安全地从Redux提供程序外部调用钩子?

我创建了一个创建对象的函数,我希望从该函数创建的对象具有唯一的键.我怎么能做到这一点?

编辑文本无响应.onClick(扩展脚本)

我在Django中的视图中遇到多值键错误

如何在Java脚本中对列表中的特定元素进行排序?

Node.js API-queryAll()中的MarkLogic数据移动

P5JS-绘制不重叠的圆