我如何检测一个元素是否有两个父uls,例如:
<ul>
<li>Link
<ul>
<li>Link
<ul>
<li class="this">Link</li>
</ul>
</li>
</ul>
</li>
</ul>
我试过了:
if ($('.this').parent('ul').parent('ul') == true)
但它似乎不起作用......任何人都可以帮忙吗?感谢
答案 0 :(得分:4)
您的代码不起作用的原因是第一个父ul
的直接父级是li
,您必须这样做:
if ($('.this').parent('ul').parent('li').parent('ul') == true)
jQuery parents()函数接受一个选择器,所以你可以这样做,因此断言有两个父ul
:
if($('.this').parents('ul').length == 2) { ... }
或者如果你想断言至少2个父ul
:
if($('.this').parents('ul').length >= 2) { ... }
答案 1 :(得分:2)
有两种方法可以做到这一点。
1)自下而上 - 从元素开始。
if($('.this').parents('ul').length >=2) { // >= to accomodate your markup
return true;
}
2)自上而下
if($('ul ul li.this').length > 0) {
return true;
} // this is a better solution as it will return true for your markup as well, which has 3 ul's before the desired li
性能方面,您应该选择第一种方法,因为它不检查每个ul子树,而只检查'.this'元素是否有2个或更多个父ul。
答案 2 :(得分:1)
if ($('.this').parents('ul').length == 2)
在上面发布的代码中,它实际上有三个,所以我怀疑你想要&gt; 1而不是== 2.
答案 3 :(得分:1)
答案 4 :(得分:0)
尝试:
if ($('.this').parent('ul').parent('ul').length > 0)
{
//your code
}
答案 5 :(得分:0)
尝试以下代码段:
var ullength = $('。this')。parents('ul')。length; if(ullength == 3){//您的代码}