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

如何获取同class元素集合中被点击元素的位置(非坐标)

获取元素在同class集合中的位次

要实现点击class为test的元素时,获取它在所有同class元素中的位次,可通过以下两种常见方式实现:

原生JavaScript方案

通过querySelectorAll获取所有目标元素集合,将其转为数组后利用indexOf获取当前元素的索引,索引加1即可得到从1开始的位次:

// 获取所有class为test的元素(按文档流顺序排列)
const testElements = document.querySelectorAll('.test');

// 为每个元素绑定点击事件
testElements.forEach(el => {
  el.addEventListener('click', function() {
    // 将类数组集合转为数组,获取当前元素的索引(从0开始)
    const index = Array.from(testElements).indexOf(this);
    // 转换为从1开始的位次
    const position = index + 1;
    console.log(`当前元素在test类集合中的位次:${position}`);
    // 若需要索引值,直接使用index即可
    // console.log(`当前元素的索引:${index}`);
  });
});

说明

  • querySelectorAll('.test')会按照元素在DOM文档中出现的先后顺序返回所有匹配元素,不受嵌套层级影响,完全符合你示例中四个元素的顺序(one → two → three → four)。
  • Array.from(testElements)用于将querySelectorAll返回的类数组对象转为真正的数组,这样才能使用数组的indexOf方法。

jQuery方案

如果项目中使用jQuery,可直接利用index()方法快速获取位次:

$('.test').click(function() {
  // 获取当前元素在所有.test元素中的索引(从0开始)
  const index = $(this).index('.test');
  // 转换为从1开始的位次
  const position = index + 1;
  console.log(`当前元素在test类集合中的位次:${position}`);
});

说明

  • $(this).index('.test')会直接返回当前元素在所有匹配.test选择器的元素中的索引,无需额外转换集合类型,使用更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:20:21