我很难弄清楚我认为应该相对简单的东西。
我需要获取下一次出现的类 (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
divcontainer
效果很好,当我尝试从 a 中的最后 content
一个div到 next 中container
的第一个 div 时,问题就来了。content
container
几个重点:-
默认情况下,只有第一个
content
div 是可见的,其余的是隐藏的,尽管我需要一个解决方案,如果例如content
第四个 div 中的第二个 divcontainer
是可见的。只有一个
content
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 结构的解决方案,如果这不可能,任何替代解决方案都会有所帮助!
对不起,冗长的问题!