编辑文本而不删除HTML

时间:2014-12-18 14:21:27

标签: javascript jquery

我试图隐藏文字" 33可用",数字会随着购买门票而改变。我无法直接编辑文本。

<table width="100%" cellspacing="0" cellpadding="2" border="0" style="">
  <tbody>
   <tr bgcolor="#eeeeee">
     <td colspan="2">
        <input type="hidden" value="90" name="fees">
        <input type="hidden" value="1992261" name="feeID">
        <input type="hidden" value="Shirt,X-Small, Small, Medium, Large, X-Large, R" name="shirtSizeArray">
        <input type="hidden" value="0" name="setdiscountflag">
        <b>Runner</b>: $90.00<br>Run on the Upper Valley Haven's Covered Bridges Half Marathon team!<br>33 available
        <input type="hidden" value="Shirt,X-Small, Small, Medium, Large, X-Large, R" name="shirtsize1992261"><input type="hidden" value="" name="setGoalAmt">
     </td>
   </tr>
  </tbody>
</table>

我尝试了以下内容,但这将删除其他html信息:

$('form#registrationForm table tbody tr td table tbody tr td table tbody tr td table tbody tr   td:contains("Run on the Upper")').html('<b>Runner:</b> $90.00<br />Run on the Uper Valley Haven\'s Covered Bridges Half Marathon team!');

我也试过使用.text,选择33可用的最佳方法是什么,只隐藏那条线?

这里有一个HTML中的小提琴http://jsfiddle.net/jelane20/76ebL7ko/1/

提前谢谢!

2 个答案:

答案 0 :(得分:2)

将文本包装在标签中,这将使操作更容易,

$($('td br:last')[0].nextSibling).wrap('<span id="avail">');

然后使用$('#avail')

进行操作

http://jsfiddle.net/76ebL7ko/3/

答案 1 :(得分:1)

一个简单的选择是使用<span>标记围绕'33 available',如下所示:

<span id='available'>33 available</span>

编辑:您可以使用以下代码执行此操作:

$('td').contents().filter(function() 
{
    return this.nodeType==3 && this.nodeValue.trim();
}).last().wrap('<span id="available">');

这是获取最后一个文本节点,该节点具有非空格字符并将其包装在一个范围内。 现在您只能访问该文本并隐藏它:

$('#available').hide();