You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为forEach循环生成的按钮添加独立ID实现单独Toggle效果

解决按钮独立开关的问题

方案1:直接修改jQuery事件,只操作当前点击的按钮

你现在的问题很明确——点击事件里选了所有.toggle元素,所以一点击所有按钮都跟着切换状态。只需要把操作目标改成当前被点击的按钮,用$(this)就行:

$(".toggle").click(function () {
  $(this).toggleClass("clicked");
});

这样点哪个按钮,就只给这个按钮加/移除clicked类,其他按钮完全不受影响。

方案2:给按钮添加专属ID,结合索引实现

如果你一定要用索引i给按钮加专属ID,分两步来:

第一步:修改按钮生成代码,添加专属ID

在创建按钮的时候,给每个按钮加一个带索引的ID,比如toggle-0、toggle-1这种:

examples.forEach((ex, i) => {
  const button = document.createElement("button");
  button.classList.add("toggle");
  // 添加上带索引的专属ID
  button.id = `toggle-${i}`;
  button.innerHTML = "výsledek";
  button.addEventListener("click", () => toggle(i));
  card.appendChild(button);
});

第二步:绑定独立的点击事件

推荐用事件委托,比逐个绑定更高效:

// 监听按钮的父元素card的点击事件,判断点击的是toggle按钮
$(card).on("click", ".toggle", function() {
  $(this).toggleClass("clicked");
});

另外,你原来的原生JS里已经绑定了toggle(i)函数,如果这个函数是用来处理其他开关逻辑的,也可以直接在这个函数里顺便处理按钮的类切换,省得再写jQuery事件:

function toggle(index) {
  // 这里写你原来的开关逻辑...
  // 同时切换对应按钮的类
  document.getElementById(`toggle-${index}`).classList.toggle("clicked");
}

这样原生和jQuery的逻辑能统一,也不会有重复绑定的问题。

内容的提问来源于stack exchange,提问作者user20838375

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:15:30