jQuery定位元素的每个第n个兄弟

时间:2012-04-19 14:10:35

标签: jquery siblings

我有以下标记:

<div class="region">
<div class="award">
<div class="award">
<div class="region">
<div class="award">
<div class="award">
<div class="award">
<div class="award">
<div class="award">
<div class="award">

如何在.region之后定位第3个元素,以便得到类似的内容?

<div class="region">
<div class="award">
<div class="award">
<div class="region">
<div class="award">
<div class="award">
<div class="award third">
<div class="award">
<div class="award">
<div class="award third">

请注意,在第一个.region之后,它不计算前两个.award元素。

提前致谢!

1 个答案:

答案 0 :(得分:2)

nextUntil结合eq应该这样做:

$("div.region").each(function() {
    $(this).nextUntil(":not(.award)").eq(2).addClass("third");
});

Nope, little 比这更复杂,处理第6个元素:

$("div.region").each(function() {
    $(this).nextUntil(":not(.award)").filter(function(index) {
        return index % 3 == 2;
    }).addClass("third");
});

Live example | source

我们抓住每个.region元素,让他们的兄弟姐妹到达第一个不是.awardnextUntil)和filter个这不是第三个。

(不确定我在map中使用first working copy的原因,filter更有意义。)