jQuery如果一个元素有两个父ul

jQuery如果一个元素有两个父ul,jquery,Jquery,我如何检测一个元素是否有两个父uls,例如: <ul> <li>Link <ul> <li>Link <ul> <li class="this">Link</li> </ul> </li> </ul> </li> <

我如何检测一个元素是否有两个父uls,例如:

<ul>
   <li>Link
      <ul>
        <li>Link
            <ul>
                <li class="this">Link</li>
            </ul>
        </li>
      </ul>
   </li>
</ul>
但它似乎不起作用。。。有人能帮忙吗?谢谢

if ($('.this').parents('ul').length == 2)

在您上面发布的代码中,它实际上有三个,因此我怀疑您希望>1而不是==2。

您的代码不起作用的原因是第一个父级
ul
的直接父级是
li
,您必须这样做:

if ($('.this').parent('ul').parent('li').parent('ul') == true)
jQuery函数接受一个选择器,因此您可以这样做,从而断言有两个父级
ul

if($('.this').parents('ul').length == 2) { ... }
if($('.this').parents('ul').length >= 2) { ... }
或者,如果您想断言至少两个父级
ul

if($('.this').parents('ul').length == 2) { ... }
if($('.this').parents('ul').length >= 2) { ... }
使用
parents()
,它不同于
parents()
,它可以跨越多个级别

$('.this').parents('ul').length
试试:

if ($('.this').parent('ul').parent('ul').length > 0)
{
  //your code
}

有两种方法可以做到这一点

1) 自下而上-从元素开始

if($('.this').parents('ul').length >=2) { // >= to accomodate your markup
    return true;
}
2) 自上而下


就性能而言,您应该选择第一种方法,因为它不会检查每个ul子树,而只检查“.this”元素是否有2个或更多父ul。

请尝试下面的代码片段:

var ullength=$('.this')。父项('ul')。长度;如果(ullength==3){//您的代码}


对于实时演示

而言,父级
ul
的直接父级是
li
,因此这不起作用。