2

私は以下のようなコードを持っています

「finallink」クラスをクリックすると、「parent」クラスまで「level_」クラスに一致する以前のすべての要素を選択または表示したいと思います。「level_1、level_2...level_n」のような非常に多くの「レベル」クラスがあります。

</ p>

<div class="parent">
    <a href="#" class="level_0">level 0 text</a>

    <div class="someclass">1</div>
    <div class="someclass">2</div>
    <div class="someclass">3</div>
    <div class="someclass">4</div>

    <h1 class="level_1">level 1 text</h1>

    <div class="someclass">1</div>
    <div class="someclass">2</div>
    <div class="someclass">3</div>
    <div class="someclass">4</div>

    <h2 class="level_2">level 2 text</h2>

    <a href="#" class="finallink">link</a>
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

私はこのようなことを試みました

$(".finallink").closest("h3").prevAll("level_1").css("background-color","yellow");

すべての「level_」値を取得するにはどうすればよいですか。サンプルコードjsfiddle

4

2 に答える 2

3

マークアップが質問のようなもので、finallinkが最後の要素である場合、または少なくとも_level同じ親内にその下にクラスを持つ要素がない場合は、最初に.parentクラスに一致する最も近い親を取得し、次に一致するfind()すべての要素を取得できますクラス_level

$(".finallink").closest(".parent")
               .find("[class^='level_']")
               .css("background-color","yellow");

それ以外の場合は、次のことができます。

$(".finallink").prevAll()
               .filter("[class^='level_']")
               .css("background-color","yellow");​
于 2012-12-21T07:06:52.510 に答える
0

「前の」レベルと言いましたが、これはリンクの前のレベルを意味します。parent「クラスまで」と言いましたが、それはコンテナlevel_xであるため、以前のすべての兄弟を使用してから、クラスの1つを持つものだけにフィルタリングできます。

$(".finallink").click(function() {
    var list = $(this).prevAll().filter(function() {
        return this.className.match(/\blevel_/);
    });

    // Use `list`
});

実例| ソース

level_1これは、の前に他のクラスがある場合でも機能します<h2 class="something level_1" ...>

于 2012-12-21T07:10:41.110 に答える