2015-10-06 62 views
0

尽管使用Google搜索几个小时,但我仍然遇到问题。 我有一个菜单,其子菜单。当子菜单处于活动状态时向父项li添加班级

<div class="themenu"> 
    <ul> 

     <li>Link 1    //Want to add class catactive here when the following submenu is active 

     <div class="thesubmenu"> 

      <ul> 
      <li class="subcat-active">submenu1</li> 
      </ul> 

     </div> 

     </li> 
    </ul> 
</div> 

我试过使用这个查询,但没有发生。

$(document).ready(function(){ 
       if($('.thesubmenu ul li').hasClass('subcat-active')){ 
        $(this).parent('.themenu ul li').addClass('cat-active'); 
       } 
      }); 
+0

'的console.log($(本).parent( 'themenu UL礼。'));'并检查您的浏览器控制台。 – NewToJS

回答

2

写这个的方法有很多,但不需要迭代(.each())或使用.hasClass(),这会减慢这个简单的调用。

只需选择li项目.subcat-active,然后使用closest('li')查找最接近的li祖先并添加该类。您首先需要使用.parent(),因为closest()包含的起始元素也是li

$(document).ready(function(){ 
    $('.thesubmenu ul li.subcat-active').parent().closest('li').addClass('cat-active'); 
}); 

http://jsfiddle.net/3ehvqzjh/1/

+0

,谢谢:) –

0
$(document).ready(function(){ 
    $('.subcat-active').each(function() { 
     $(this).parents('li').eq(0).addClass('cat-active'); 
    }); 
}); 

Working example

0

只是做:

$(document).ready(function(){ 
    $('.thesubmenu ul li.subcat-active').each(function(){ 
     $(this).parent().closest('li').addClass('cat-active'); 
    }); 
}); 

演示:http://jsfiddle.net/bpkpn6b5/

+0

' closest'包含当前元素,所以需要'parent'。 “每个”都没有必要。 –

+0

是的,我忘了包括它本身,我以为我最终删除了评论 – Popnoodles

0

这里是一个DEMO

$(document).ready(function(){ 

    if ($('.thesubmenu ul li').hasClass('subcat-active')) { 
      $('.thesubmenu ul li').parents('li:eq(0)').addClass('cat-active'); 
    } 
});