比較的単純であるべきだと思うものを見つけようとして、本当に苦労しています。
次のクラス (div.content) を取得する必要があります。これは DOM のどこかに表示される可能性があります。
以下は、私が持っているものを表す簡略化されたマークアップです。
<div class="container">
<div class="content">
Example content #1 <a href="#" class="next">Next</a>
</div>
<div class="content">
Example content #2 <a href="#" class="next">Next</a>
</div>
</div>
<div class="container">
<div class="content">
Example content #1 <a href="#" class="next">Next</a>
</div>
<div class="content">
Example content #2 <a href="#" class="next">Next</a>
</div>
</div>
content
特定の作品内の次のdiv を表示すると、 a の最後のdivからnextの最初container
の divに移動しようとすると問題が発生します。 content
container
content
container
いくつかの重要なポイント:-
デフォルトでは、最初の div のみ が表示され、残りは非表示になっていますが、たとえば 4 番目の 2 番目のdivが表示されて
content
いる場合に機能するソリューションが必要です。content
container
content
表示されるのは 1 つの divだけです。
これまでに思いついた唯一の解決策は、機能しますが、非常に面倒に思えます。
$('.next').click(function() {
$theContent = $(this).parent('.content');
$theContent.hide();
if ($theContent.next('.content').length) {
$theContent.next('.content').show();
} else if ($theContent.parent('.container').next('.container')
.children('.content').length
) {
$theContent.parent('.container').next('.container')
.children('.content:first').show();
} else {
// reached the end or something went wrong
}
});
これの主な欠点は、上記の DOM 構造に依存していることです。DOM のどこに表示されても、特定のクラスを持つ次の要素を選択するためのメソッドが存在すると確信していました。
理想的には、特定の DOM 構造に依存しないソリューションが必要です。それが不可能な場合は、代替ソリューションが役立ちます!
長々と質問すみません!