使用jQuery从匹配特定格式的元素中删除所有类

使用jQuery从匹配特定格式的元素中删除所有类,jquery,Jquery,早些时候我问了一个类似的问题,但是我的措辞提供了正确提交的答案,但不是针对我实际上试图回答的问题:)为了不混淆SO的列表,我单独发布了这个问题 鉴于下面的HTML,从以“child”开头的#item_3中删除所有类的最方便方法是什么 解决方案需要能够保持“stays_put”类,并且不影响任何其他列表元素 <ul id="list"> <li id="item_1" class="child_1 child_12">Item 1</li> <li

早些时候我问了一个类似的问题,但是我的措辞提供了正确提交的答案,但不是针对我实际上试图回答的问题:)为了不混淆SO的列表,我单独发布了这个问题

鉴于下面的HTML,从以“child”开头的#item_3中删除所有类的最方便方法是什么

解决方案需要能够保持“stays_put”类,并且不影响任何其他列表元素

<ul id="list">
  <li id="item_1" class="child_1 child_12">Item 1</li>
  <li id="item_2" class="child_4 child_6">Item 2</li>
  <li id="item_3" class="child_3 child_1 stays_put">Item 3</li>
</ul>
    第1项 第2项 第3项
我最初问的问题可以在这里找到。

好吧,我想您可以直接处理
属性,如下所示:

$('#item_3').attr('class', function() {
    return $.trim($(this).attr('class').replace(/child_\S+/g, ''));
});
基本上,您可以搜索前缀为
child\uu
的类,替换为nothing,然后使用结果字符串设置
class
属性。正则表达式
/child\S+/g
匹配
child\uuz
,后跟非空白字符,因为类名是空格分隔的


您可以通过组合使用
拆分
和:

var classes = $('#item_3').attr('class').split(' ');
$.each( classes, function( idx, val ) {
   if( val.indexOf('child_') === 0 ) {
      $('#item_3').removeClass( val );
   }
});