Javascript 原型:如何选择嵌套元素?

Javascript 原型:如何选择嵌套元素?,javascript,css-selectors,prototypejs,Javascript,Css Selectors,Prototypejs,我有以下html结构: <div class="main"> <ul id="nav"> <li> <a></a> <div> <ul class="level0"> <li> .......

我有以下html结构:

<div class="main">
   <ul id="nav">
       <li>
             <a></a>
             <div>
                 <ul class="level0">
                      <li>
                         .......                                
                      </li>
                      .......
                      <li> 
                         .........
                      </li>
                 </ul>
             </div>
       </li>
       ......
       <li>
             <a></a>
             <div>
                 <ul class="level0">
                      <li>
                         .........
                      </li>
                      .........
                      <li> 
                         .........
                      </li>
                 </ul>
             </div>
       </li>
   </ul>
</div>
但现在,对于每个元素,我必须通过如下方式选择另一个li节点:

element > div > ul
但我不明白在得到每个元素后如何组合元素和css选择器

附言: 所以,我试过了,还是没用。我有空名单

  var arrLi = $('nav').childElements();
        arrLi.each(function(node)
        {
           list = $(node).down('ul.level0');
           alert(list);
           list.each(function(nodeLi)
           {
              alert(nodeLi.nodeName); 
           });
        });

如果只需要第一级
  • 元素,请使用:

    $('.main ul#nav li')
    
    $('.main ul.level0 li')
    
    如果只需要第二级
  • 元素,请使用:

    $('.main ul#nav li')
    
    $('.main ul.level0 li')
    
    如果两者都需要,可以执行以下操作:

    $('.main li').each(function() {
        if($(this).parent().hasClass('level0')) {
            // second level <li>
        }
        else {
            // first level <li>
        }
    });
    
    $('.main li')。每个(函数(){
    if($(this.parent().hasClass('level0')){
    //二级
  • } 否则{ //第一级
  • } });
  • 我解决了我的问题:

    var arrLi = $('nav').childElements();
    
    
        arrLi.each(function(node)
        {
           nodeUl = $(node).select('div > ul.level0');
    
           if (nodeUl.length > 0)
           {
               /*
               here was a problem because nodeUL has array type here.
               I have only one ul element in the first node, therefore
               call it using nodeUl[0].
               */
               var nodesLi = nodeUl[0].childElements(); 
    
               nodesLi.each(function(nodeLi)
               {
                  alert(nodeLi.nodeName); 
               });
           }
        });
    

    谢谢大家的评论

    Thx,我试过了,并更新了一点问题。然后我得到了李将军的名单。我需要分别获取每个Li列表(级别2)。$('main ul.level0 Li')将获取所有第二级别
  • 元素的集合。您可以使用$('.main ul.level0 li')。每个(..)迭代并处理每个第二级li。如果这是解决方案,请将其标记为正确,以便其他人可以清楚地看到。