jQuery选择或隐藏div中带有类的深层嵌套div

时间:2015-06-10 19:06:28

标签: jquery nested selector

我希望在只有类名的容器div中隐藏一个深层嵌套的div(带有类或ID名称)。容器div由应用程序生成,因此我无法在其上设置ID。我不确切知道div生成了多少级别,所以我不能使用路径 - 因为该路径有时会根据生成的页面而改变。 几乎我需要使用循环或其他东西。

这就是我所拥有的

<div class ="container">
   <div class ="level1">
     <div class = "level2">
        <other nested  divs and html here...>
                 <div class = "levelN" id="idLevelN">
                      content to hide 
                         <more divs and html here..../>

                 </div>
        </other nested  divs and html here...>
     </div>
   </div>
</div>

我想用class =“levelN”id =“idLevelN”隐藏div。

我尝试了各种各样的事情,但我放弃了。我试图使用find(),filter()等...帮忙?感谢

3 个答案:

答案 0 :(得分:0)

  

我想要隐藏一个深层嵌套的div(带有类或ID名称)   在只有类名的容器div中。我不确切知道如何   生成div的许多级别

假设你有这个:

<div id="SearchHere">
  <div>
    <div>
      <div></div>
    </div>
  </div>
  <div></div>
  <div>
    <div>
      <div>
        <div >aaaaa</div> /* you want this*/
      </div>
    </div>
  </div>
  <div>
    <div></div>
  </div>
</div>

然后你可以this

jQuery.fn.deepestDiv = function()
 {
     var $target = this.children(),
         $next = $target;
     while ($next.length)
     {
         $target = $next;
         $next = $next.children();
     }
     return $target;
 }

现在:

  $("#SearchHere").deepestDiv().css('color','red')

enter image description here

http://jsbin.com/kedobuyumo/3/edit

答案 1 :(得分:0)

您应该只能通过ID访问此ID,因为ID对于页面来说是唯一的。

$('#idLevelN').hide()

但是,我意识到在实践中情况并非总是如此,因此您可能需要使用该类。

$('div.container div.levelN').hide()

答案 2 :(得分:0)

您可以使用.children()选择器过滤所选元素的子元素。

您还可以使用.parents()检查divcontainer类是否有效(是父母)。

像:

   if ($( '#idLevelN' ).parents('.container').length){
     $( '#idLevelN').children().hide();
}

这是Fiddle