我有以下(缩写)HTML:
<div class="root">
<div class="body">
<div class="content">
<ul>
<li>A</li>
<li>B</li>
<li class="active">C</li>
</ul>
</div>
<div class="content">
<ul>
<li>D</li>
<li>E</li>
<li>F</li>
</ul>
</div>
</div>
</div>
我正在使用jQuery将.active
向下移动到无序列表中。当到达无序第一个列表的末尾(C
)时,我希望.active
从div
开始向下移动到下一个D
。
我怎样才能使用jQuery选择第一个 li
,在最后一次出现.active
之后无论 >谁的孩子是没有诉诸(在我看来)脆弱的结构,例如parent().parent()
?
答案 0 :(得分:1)
试试这个,它也会在单个列表中处理的移动。
var $a = $('.active');
var $n = $a.next('li');
if ($n.length == 0) {
$n = $a.closest('.content') // first ancestor matching class
.next('.content') // next sibling also matching class
.find('li').first(); // first <li> descendent therein
}
$a.removeClass('active');
$n.addClass('active');
的工作演示
答案 1 :(得分:1)
这就是你所需要的一切
var $active = $('li.active');
$active.removeClass('active')
.next('li')
.add($active.parents('.content:first')
.next('.content')
.find('li:first'))
.first().addClass('active');
编辑使代码更通用以处理完整的流程