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,5
か7,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 構造に関するものではありません。とにかく、おそらく他の誰かがより良い解決策を知っています..
ベルリンからのご挨拶。乾杯