如何匹配类名中下划线之前的所有内容并替换为单词

时间:2014-05-25 06:36:31

标签: javascript jquery html regex

Fiddle Example

该表的类名如下:

dsdds_imagedfdd_imagesdadsa_titledsdf_title3434_description48fd_description

它们只是下划线之前的随机字符串。你将如何用" placeholder"替换所有这些随机字符串?在jQuery中,它们变为placeholder_titleplaceholder_imageplaceholder_description

HTML:

<button id="cleartable">Clear</button>
<table class="toptable">
  <tr>
    <th class="dsdds_image">1</th>
    <th class="r3dde_image">2</th>
    <th class="s43434_image">3</th>
  </tr>
  <tr>
    <td class="44665_description">4</td>
    <td class="3434d_description">5</td>
    <td class="a34df_description">6</td>
  </tr>
  <tr>
    <td class="dfs4rf_title">7</td>
    <td class="adf43df_title">8</td>
    <td class="dsffds4_title">9</td>
  </tr>
</table>

我失败的尝试

$("#cleartable").click(function() {
  $(".toptable td,.toptable th").each(function() {
    var changeclass = $(this).attr("class");
    changeclass.replace(/^[^_]+/,"placeholder");    
  });
});

3 个答案:

答案 0 :(得分:1)

你可以这样做:

$("#cleartable").click(function() {
   $(".toptable td,.toptable th").each(function() {
     var changeclass = $(this).attr("class");
     $(this).attr('class',changeclass.replace(/^[^_]+/,"placeholder"));//See this?  
   });
});

.replace为您提供了一个新字符串,不会更改原始字符串。所以,你需要在某个地方重新分配它。

答案 1 :(得分:1)

这样的事情似乎更容易

$('#cleartable').on('click', function () {
    $('td, th', '.toptable').attr('class', function(_, klass) {
        return 'placeholder_' + klass.split('_').pop();
    });
});

FIDDLE

答案 2 :(得分:1)

将您的代码更改为

$("#cleartable").click(function() {
    $(".toptable td,.toptable th").each(function() {
        $(this).attr("class", changeclass.replace(/^[^_]+/,"placeholder"));    
    });
});

因为您没有将替换的类分配回选择的元素