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

时间:2011-11-18 11:04:03

标签: jquery

我如何检测一个元素是否有两个父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)

但它似乎不起作用......任何人都可以帮忙吗?感谢

6 个答案:

答案 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)

使用与parents()不同的parent(),它可以遍历多个级别。

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

http://api.jquery.com/parents/

答案 4 :(得分:0)

尝试:

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

答案 5 :(得分:0)

尝试以下代码段:

var ullength = $('。this')。parents('ul')。length; if(ullength == 3){//您的代码}

直播演示http://jsfiddle.net/creativegala/rMk9b/2/