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

jQuery获取.content容器中指定类子元素的选中索引

解决方法:用jQuery的.index()或.filter()快速获取目标元素索引

嘿,刚好能解决你的问题!不用写each循环,用jQuery的内置方法就能轻松拿到点击元素在指定子元素集合里的索引,下面给你两种符合你需求的实现方式:

方法一:最简洁的.index()直接调用

这是最高效的写法,直接利用jQuery的.index()方法的特性——当你给它传入一个jQuery对象时,它会返回该对象在当前集合中的位置(从0开始计数):

// 给目标子元素绑定点击事件
$(".content").on("click", ".r-s, .r-f", function() {
  // 第一步:获取.content下所有需要关注的子元素集合
  const $targetElements = $(this).closest(".content").children(".r-s, .r-f");
  
  // 第二步:直接获取当前点击元素在集合中的索引(0开始)
  const zeroBasedIndex = $targetElements.index($(this));
  // 如果需要1开始的索引,直接加1即可
  const oneBasedIndex = zeroBasedIndex + 1;

  console.log("当前元素在目标集合中的索引(0开始):", zeroBasedIndex);
  console.log("当前元素在目标集合中的索引(1开始):", oneBasedIndex);
});

方法二:用.filter()配合.index()实现

如果你更倾向于用.filter()来筛选(符合你提到的思路),可以这样写:

$(".content").on("click", ".r-s, .r-f", function() {
  const $targetElements = $(this).closest(".content").children(".r-s, .r-f");
  
  // 用filter筛选出当前点击的元素,再获取它在原集合中的索引
  const zeroBasedIndex = $targetElements.filter((idx, elem) => {
    return $(elem).is($(this));
  }).index();

  console.log("索引值:", zeroBasedIndex);
});

为什么这两种方法都不用each?

jQuery的.index()和.filter()内部已经帮我们完成了遍历匹配的逻辑,比手动写each循环更简洁,也更符合jQuery的链式调用风格。而且你之前获取的length值,也可以用$targetElements.length直接拿到,完全连贯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:22:01