0

指定されたデータ ID を持つすべての先行要素を検索したいと思います。

たとえば、data-test="3" がある場合、data-test="2" と data-test="1" を取得する必要があります。

 <li><a href="#" data-test="1">test</a></li>
 <li><a href="#" data-test="2">test</a></li>
 <li><a href="#" data-test="3">test</a></li>

prevAll 機能に気付きましたが、機能していないようです。

4

4 に答える 4

3

.prevAll()は正しいアプローチですが、 s は互いに兄弟ではない<li>ため、 sからトラバースする必要があります。<a>

$('a[data-test="3"]').parent().prevAll(':has(a[data-test])').children();

http://jsfiddle.net/mattball/NcatZ

于 2013-04-14T04:09:02.863 に答える
0

リンクを見つけて、その親にアクセスして を操作できるようにする必要がありますprevAll

$("a[data-test='3']").parent().prevAll().children("a")

以前の親を取得したら、それらのchildrenリンクを取得できます。

于 2013-04-14T04:09:26.967 に答える
0

jQuery は前の要素を見つけることができません。このマークアップでは、それらは DOM の異なるツリーにあります。このようにマークアップを変更できます..

<li>
    <a href="#" data-test="1">test</a>
    <a href="#" data-test="2">test</a>
    <a href="#" data-test="3">test</a>
</li>

<script>
    $(document).ready(function() {
        console.log( $("a[data='3']").prevAll() );
    });
</script>

ソートに注意してください。逆方向にソートされます。結果 = [データ 2, データ 1]

これが以下のようなツリーで機能する場合、見つける必要があります7,6,57,6,1? このコマンドは、DOM の他のブランチでのツリー トラバースには最適ではないことがわかります。

<li>
    <a href="#" data-test="1">test</a>
    <a href="#" data-yeah="2">test</a>
    <a href="#" data="3">test</a>
    <a href="#" data-yeah="4">test</a>
    <a href="#" data="5">test</a>
</li>
<ol id='list'>
    <li><a href="#" data-test="6">test</a></li>
    <li><a href="#" data-yeah="7">test</a></li>
    <li><a href="#" data="8">test</a></li>
    <li><a href="#" data-yeah="9">test</a></li>
    <li><a href="#" data="10">test</a></li>
 </ol>

data[ ] がliタグに含まれるようにマークアップを変更することをお勧めします

<ol id='list'>
    <li data-test="6"><a href="#" >test</a></li>
    <li data-yeah="7"><a href="#">test</a></li>
    <li data="8"><a href="#" >test</a></li>
    <li data-yeah="9"><a href="#">test</a></li>
    <li data="10"><a href="#">test</a></li>
</ol>

したがって、このマークアップでは、次のものが必要なものを見つけることができます

console.log(
    $("li[data=8]").prevAll()
);

これは通常、liタグによって発生する問題です。これらはリスト項目に関するものであり、実際には主要な DOM 構造に関するものではありません。とにかく、おそらく他の誰かがより良い解決策を知っています..

ベルリンからのご挨拶。乾杯

于 2013-04-14T05:00:51.630 に答える