删除类(如果存在)并使用jquery添加新类

时间:2017-01-27 14:16:28

标签: javascript jquery

我有<ul>的标记如下:

<ul>       
  <li class=""><a href="">Insulated And Extruded</a></li>
  <li class=""><a href="">Grille Type Rolling</a></li>
  <li class="active2"><a href="">PVC High Speed Doors</a></li>
  <li class=""><a href="">Swinging doors</a></li>
</ul> 

在这里,我想检查li是否有一个名为active2的类,如果有,那么我需要删除该类,并需要为该li添加不同的类。

这是我在jQuery中尝试的方式:

if($('ul li').hasClass('active2')) {
  $(this).removeClass('active2').addClass('active1'); 
}

但它不起作用。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

要使用hasClass(),您需要遍历所有li元素并单独检查它们。

但是,此处不需要hasClass(),因为您可以直接选择.active2元素并在其上调用toggleClass(),如下所示:

&#13;
&#13;
$('ul li.active2').toggleClass('active2 active1');
&#13;
.active1 { background-color: yellow; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>       
  <li class=""><a href="">Insulated And Extruded</a></li>
  <li class=""><a href="">Grille Type Rolling</a></li>
  <li class="active2"><a href="">PVC High Speed Doors</a></li>
  <li class=""><a href="">Swinging doors</a></li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您不需要hasClass(),您可以这样做:

$('ul li.active2').removeClass('active2').addClass('active1'); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>       
  <li class=""><a href="">Insulated And Extruded</a></li>
  <li class=""><a href="">Grille Type Rolling</a></li>
  <li class="active2"><a href="">PVC High Speed Doors</a></li>
  <li class=""><a href="">Swinging doors</a></li>
</ul>