如何使用jQuery从所有元素中删除类

102

我正在使用以下代码更改元素的类:

  $("#"+data.id).addClass("highlight")

给定以下列表。

 <div id="menuItems"> 
 <ul id="contentLeft" class="edgetoedge"> 
 <li  class="sep" ">Shakes and Floats</li> 
 <li id="297"><a href="#" onClick="cart('297','add')"><small>$5.00</small><b>Vanilla</b>     </a></li> 
 <li id="298"><a href="#" onClick="cart('298','add')"><small>$5.00</small><b>Peanut Butter</b></a></li> 
 <li id="299"><a href="#" onClick="cart('299','add')"><small>$5.00</small><b>Combo</b></a></li> 
 <li id="300"><a href="#" onClick="cart('300','add')"><small>$5.00</small><b>Chocolate</b></a></li> 
 <li id="301"><a href="#" onClick="cart('301','add')"><small>$5.00</small><b>Strawberry</b></a></li> 
 <li id="303"><a href="#" onClick="cart('303','add')"><small>$5.00</small><b>Banana</b></a></li> 
 <li id="304"><a href="#" onClick="cart('304','add')"><small>$5.00</small><b>Root Beer Float</b></a></li> 
 <li id="305"><a href="#" onClick="cart('305','add')"><small>$5.00</small><b>Espresso</b></a></li> 
 </ul>
 </div> 

我以为我可以通过这个方法删除类...

  $(".edgetoedge").removeClass("highlight");

但这并不起作用。 我该如何删除这个类?

6个回答

185
你需要选择位于 .edgetoedge 类中的所有 li 标签。.edgetoedge 只匹配一个 ul 标签。
$(".edgetoedge li").removeClass("highlight");

46

尝试执行:$(".highlight").removeClass("highlight");。通过选择$(".edgetoedge"),你只在该级别上运行函数。


你的答案应该被接受。这是一个非常有趣的技巧,你救了我的一天。 - Viet Nguyen

22

这只是从所有拥有edgetoedge类的元素中移除highlight类:

$(".edgetoedge").removeClass("highlight");

我认为你需要这个:

$(".edgetoedge .highlight").removeClass("highlight");

.edgetoedge .highlight选择器会选择所有属于具有edgetoedge类且具有highlight类的父元素下的子元素。


2
能够在不知道元素类型的情况下定位元素,这是一项非常有用的技能。 - Andy

8
您可以尝试这个:
 $(".edgetoedge").children().removeClass("highlight");

3
$(".edgetoedge>li").removeClass("highlight");

1
最好的方法是通过元素标签来定位所有元素中的jQuery类。例如,
$("div").removeClass("highlight");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接