替换多个元素上的字符

时间:2014-12-04 04:44:23

标签: javascript jquery

鉴于这段HTML

<table class="variations" cellspacing="0">
<tbody>
    <tr>
        <td class="label">
            <label for="cantidad">Cantidad</label>
        </td>
        <td class="value">
            <fieldset> 
                <br />
                <input type="radio" value="3-rosas" id="cantidad" name="attribute_cantidad">3_rosas
                <br />
                <input type="radio" value="12-rosas" checked='checked' id="cantidad" name="attribute_cantidad">12_rosas
                <br />
                <input type="radio" value="18-rosas" id="cantidad" name="attribute_cantidad">18_rosas
                <br />
                <input type="radio" value="24-rosas" id="cantidad" name="attribute_cantidad">24_rosas
                <br />
            </fieldset>
        </td>
    </tr>
</tbody>
</table>

我想替换&#34; _&#34;选项文本上的字符,使用javascript或jQuery的空格。

我尝试过没有成功。

感谢。

3 个答案:

答案 0 :(得分:3)

很难在单选按钮后获取每个文本,然后用空格替换_。您需要将文本包装在某些html元素中,例如labelspan等,然后使用.replace('_',' ');)

见下面的代码 -

HTML - 我已将文字包装成标签

<table class="variations" cellspacing="0">
  <tbody>
    <tr>
      <td class="label">
         <label for="cantidad">Cantidad</label>
      </td>
      <td class="value">
         <fieldset> 
            <br />
            <input type="radio" value="3-rosas" id="cantidad" 
                    name="attribute_cantidad">
            <label>3_rosas</label>
            <br />
            <input type="radio" value="12-rosas" checked='checked' 
                   id="cantidad" name="attribute_cantidad">
            <label>12_rosas</label>
            <br />
            <input type="radio" value="18-rosas" id="cantidad"
                   name="attribute_cantidad">
            <label>18_rosas</label>
            <br />
            <input type="radio" value="24-rosas" id="cantidad" 
            name="attribute_cantidad">
            <label>24_rosas</label>
            <br />
         </fieldset>
       </td>
    </tr>
</tbody>

jQuery:

$(function(){
    $('table td.value fieldset label').each(function(){
     $(this).text($(this).text().replace('_',' '));
    });
});

<强> DEMO

答案 1 :(得分:2)

请检查以下代码。

$('.value').find('input:radio').each(function(){
    var val = $(this).val().replace(/-/g, ' ');
    $(this).next('span').html(val);
});

请查看以下小提琴。

Fiddle

答案 2 :(得分:0)

您可以使用.contents()方法,然后替换每个文本节点中的任何_,如下所示:

$('.value > fieldset').contents().each(function() {
    this.nodeType !== 3 || ( this.textContent = this.textContent.replace(/_/g,' ') );
});

$('.value > fieldset').contents().each(function() {
    this.nodeType !== 3 || ( this.textContent = this.textContent.replace(/_/g,' ') );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table class="variations" cellspacing="0">
<tbody>
    <tr>
        <td class="label">
            <label for="cantidad">Cantidad</label>
        </td>
        <td class="value">
            <fieldset> 
                <br />
                <input type="radio" value="3-rosas" id="cantidad" name="attribute_cantidad">3_rosas
                <br />
                <input type="radio" value="12-rosas" checked='checked' id="cantidad" name="attribute_cantidad">12_rosas
                <br />
                <input type="radio" value="18-rosas" id="cantidad" name="attribute_cantidad">18_rosas
                <br />
                <input type="radio" value="24-rosas" id="cantidad" name="attribute_cantidad">24_rosas
                <br />
            </fieldset>
        </td>
    </tr>
</tbody>
</table>