2015-10-06 42 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'); 
    } 
}); 
相關問題