0

次のマークアップがあります。

<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 の後の最初の 2 つの .award 要素はカウントされないことに注意してください。

前もって感謝します!

4

1 に答える 1

2

nextUntilと組み合わせてeqそれを行う必要があります:

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

いいえ、 6 番目の要素を処理するには、それよりも少し複雑です。

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

実例| ソース

そこで、各要素を取得し、 ( ) で.regionはない最初の要素までの兄弟を取得し、3 つおきの要素ではない要素を取り出します。.awardnextUntilfilter

(最初の作業コピーでを使用mapした理由はよくわかりませんが、もっと理にかなっています。)filter

于 2012-04-19T14:13:13.350 に答える