如何选择最深的css类使用?
在以下列表中,如何选择课程.active
的最深使用,在这种情况下<li>
包裹<span>Item 1.1.1.1</span>
?
<ul>
<li class="active">
<span>Item 1</span>
<ul>
<li class="active">
<span>Item 1.1</span>
<ul>
<li>
<span>Item 1.1.1</span>
<ul>
<li class="active"> // need selector for this <li>
<span>Item 1.1.1.1</span>
<ul>
<li>
<span>Item 1.1.1.1.1</span>
</li>
<li>
<span>Item 1.1.1.1.2</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>
<span>Item 1.2</span>
<ul>
<li>
<span>Item 1.2.1</span>
<ul>
<li>
<span>Item 1.2.1.1</span>
<ul>
<li>
<span>Item 1.2.1.1.1</span>
</li>
<li>
<span>Item 1.2.1.1.2</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<ul>
答案 0 :(得分:3)
您可以使用下面的jQuery :not
和:has
选择器来选择最深的有效li:
$('li.active:not(:has(.active))')
jQuery( ":not(selector)" )
:选择与给定选择器不匹配的所有元素。
jQuery( ":has(selector)" )
:选择包含至少一个与指定选择器匹配的元素的元素。
$('li.active:not(:has(.active))').css("border", "1px solid red");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="active">
<span>Item 1</span>
<ul>
<li class="active">
<span>Item 1.1</span>
<ul>
<li>
<span>Item 1.1.1</span>
<ul>
<li class="active">
<span>Item 1.1.1.1</span>
<ul>
<li>
<span>Item 1.1.1.1.1</span>
</li>
<li>
<span>Item 1.1.1.1.2</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>
<span>Item 1.2</span>
<ul>
<li>
<span>Item 1.2.1</span>
<ul>
<li>
<span>Item 1.2.1.1</span>
<ul>
<li>
<span>Item 1.2.1.1.1</span>
</li>
<li>
<span>Item 1.2.1.1.2</span>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<ul>
&#13;
答案 1 :(得分:0)
那将是ul .active .active .active li span
。
根据this回答,您无法动态选择它。
使用js / jQuery查找最深的节点:
var deepest = null;
var depth = 0;
$('ul .active li').each(function () {
if ($(this).parents('.active').length > depth) {
depth = $(this).parents('.active').length;
deepest = $(this);
}
});