子菜单处于活动状态时,将类添加到父li

时间:2015-10-06 11:52:19

标签: javascript jquery

我在这里遇到问题,尽管谷歌搜索了几个小时。  我有一个菜单,有子菜单。

<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');
                } 
            });

4 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

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

Working example

答案 2 :(得分:0)

只是这样做:

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

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

答案 3 :(得分:0)

这是DEMO

 $(document).ready(function(){

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