如果hassClass然后addClass父母不工作?

时间:2015-03-23 21:01:24

标签: jquery

为什么不添加课程:

<ul class="sub-menu" style="display: none;">

HTML:

<ul class="sub-menu" style="display: none;">
   <li id="menu-item-18" class="current-menu-item page_item current_page_item">
      <a href="#">Sitename</a>
   </li>
</ul>

JQuery的:

if ($('.sub-menu li').hasClass('current-menu-item')) {
    $(this).parent().addClass('active');
}

同样的结果:

if ($('li').hasClass('current-menu-item')) {
    $(this).parent().addClass('active');
}

1 个答案:

答案 0 :(得分:1)

因为this未引用您在if声明中找到的元素。

您将遍历元素并检查每个元素:

$('.sub-menu li').each(function(i, el){
  if ($(el).hasClass('current-menu-item')) {
    $(el).parent().addClass('active');
  }
});

但是,在这种情况下,您只需选择匹配的元素,获取每个父元素并将类添加到所有元素:

$('.sub-menu li.current-menu-item').parent().addClass('active');