Jquery 分配';主动';只给孩子上课

Jquery 分配';主动';只给孩子上课,jquery,css,twitter-bootstrap,Jquery,Css,Twitter Bootstrap,我有一个基于bootstrap的导航树,其中当前页面路径中的每个都被赋予“active”类。因此,如果我在主页下方两层的页面上,代码大致如下: <ul> <li>Link1</li> <li>Link2</li> <li class='active'>Link3 <ul> <li>sublink1</li> <li class=active

我有一个基于bootstrap的
    导航树,其中当前页面路径中的每个
  • 都被赋予“active”类。因此,如果我在主页下方两层的页面上,代码大致如下:

    <ul>
      <li>Link1</li>
      <li>Link2</li>
      <li class='active'>Link3
        <ul>
          <li>sublink1</li>
          <li class=active>sublink2
            <ul>
              <li>subsublink1</li>
              <li class=active>subsublink2 THIS IS MY PAGE</li>
            </ul>
          </li>
        </ul>
      </li>
    
    这:

    JSFiddle:
    还是我没听懂你的意思?

    这是:

    JSFiddle:

    或者我不明白你说的对吗?

    With:last u获取DOM中的最后一个元素。因此,您可以使用li.active获取父对象并删除边框

    $('li.active:last').parents('li.active').css('border', 'none');
    
    请查看以下示例:

    或者,您可以用removeClass('active')替换.css('border','none')


    向您致意:last u获取DOM中的最后一个元素。因此,您可以使用li.active获取父对象并删除边框

    $('li.active:last').parents('li.active').css('border', 'none');
    
    请查看以下示例:

    或者,您可以用removeClass('active')替换.css('border','none')


    致以最诚挚的问候

    查找包含另一个
    元素的所有
    li.active
    元素并删除边框:

    $('li.active:has(.active)').css({ border : 'none' });
    
    li.active.hasSubmenu {border:none}
    

    查找包含另一个
    元素的所有
    li.active
    元素并删除边框:

    $('li.active:has(.active)').css({ border : 'none' });
    
    li.active.hasSubmenu {border:none}
    

    我假设
    li
    只能将
    ul
    作为其子级,并且只有
    li
    将具有
    .active
    类,对于这些假设,这是有效的:

    $('li.active').filter( function () {
        if ( $(this).children('ul').length === 0 )
            return true;
        return false;
    }).parents('li').removeClass('active');
    

    我假设
    li
    只能将
    ul
    作为其子级,并且只有
    li
    将具有
    .active
    类,对于这些假设,这是有效的:

    $('li.active').filter( function () {
        if ( $(this).children('ul').length === 0 )
            return true;
        return false;
    }).parents('li').removeClass('active');
    

    找到了一种稍微不同的实现方法:

    $('li.active').has('ul').addClass('hasSubmenu');
    
    显然,如果我的li包含ul,它不可能是最深的li

    因此,现在我可以使用纯css来消除边界:

    $('li.active:has(.active)').css({ border : 'none' });
    
    li.active.hasSubmenu {border:none}
    

    找到了一种稍微不同的实现方法:

    $('li.active').has('ul').addClass('hasSubmenu');
    
    显然,如果我的li包含ul,它不可能是最深的li

    因此,现在我可以使用纯css来消除边界:

    $('li.active:has(.active)').css({ border : 'none' });
    
    li.active.hasSubmenu {border:none}
    


    last
    正在深入查看吗?如果您指的是孔的深度DOM:是。查看jquery页面:是
    最后一个
    在深度查看吗?如果您是指孔的深度,DOM:yes。看看jquery页面:很好,非常简单+我给你1分你赢了,非常elegant@Heraldmonkey当然,您可以用
    .addClass('hasSubMenu')
    替换
    .css(…)
    ,并使用css去除边框,正如您在评论中所建议的,非常简单+我给你1分你赢了,非常elegant@Heraldmonkey当然,你可以用
    .addClass('hasSubMenu')
    替换
    .css(…)
    ,并使用css去除边框,正如你在评论中所建议的,这正是@pawel发布的内容,友善地接受他的回答这是行不通的,因为它可能有ul,但ul可能没有一个活跃的liit@Pete你是对的,但在我的特殊情况下,只显示活动子ULs,所以它会工作。这正是@pawel发布的内容,友善地接受他的回答这是行不通的,因为它可能有ul,但ul可能没有一个活跃的liit@Pete你是对的,但在我的具体案例中,只显示活动的sub ULs,所以它会工作。这确实完成了工作,但我使用了pawel,因为它更简洁。谢谢。这确实完成了任务,但我使用了pawel,因为它更简洁。谢谢