【问题标题】:How do I select the next "n" elements starting from the current element in jQuery?如何从 jQuery 中的当前元素开始选择下一个“n”元素?
【发布时间】:2011-03-28 13:45:09
【问题描述】:

如何从当前元素开始选择接下来的“n”个元素?我的意思是……

 $(this).attr(...);

我想这样做“n”次。以 n=4 为例:

$(this).attr(...);
$(this).next().attr(...);
$(this).next().next().attr(...);
$(this).next().next().next().attr(...);

或者循环执行:

for (i = 0; i < n; i++) {
    $(this).next().attr(...);
}

我该怎么做?有没有办法通过选择下一个“n”元素或循环来做到这一点?

【问题讨论】:

  • 这到底是为什么被否决了?这措辞很好,这是一个常见的问题。
  • 同意。两次投反对票,没有任何解释。投反对票的人应该留下一个理由。对我来说,这似乎是一个非常合理的问题。

标签: jquery jquery-selectors


【解决方案1】:

这应该可行:

$(this).nextAll().slice(0,4).attr(…)

更新:

这也可以:

$(this).nextAll("*:lt(4)").attr(…)

【讨论】:

  • slice() 中的 '0' 会是 $(this) 吗?
  • 不,因为在此之前您调用 .nextAll() 这不包含元素本身
  • @Hristo - 如果您也需要原件,可以致电$(this).nextAll().andSelf()...
  • @jigfox... .slice() 在参数上是包含还是不包含?
  • @Hristo:第一个参数包含,第二个不包含
【解决方案2】:

the nextAll method 选择元素的以下同级元素,可选地由选择器过滤。然后,您可以使用 slice 来限制为较小的 n。

【讨论】:

    【解决方案3】:

    $(this).slice(start_index, end_index) 将选择您选择的一部分。您可以在循环中跟踪您当前的索引,然后在您满足条件时对原始集合应用 .slice(cur_index, cur_index+n) 函数。

    【讨论】: