使用jQuery替换Text而不删除子项

时间:2014-03-11 01:03:08

标签: javascript jquery

我想更改此文字:

<body>
<p class="server_info">
         GT 64 ms <b>|</b> Time:

         <span id="serverTime">4:21:26</span>
         <span id="serverDate">11/03/2014</span>
</p>
</body>

<body>
<p class="server_info">
         GT 64 ms <b>|</b> Server Time:

         <span id="serverTime">4:21:26</span>
         <span id="serverDate">11/03/2014</span>
</p>
</body>

如何更改文字?

我用过这个

$(".server_info").text(function(i,v) { 
   return v.replace("time ", "Server time: "); 
});

但结果如下:(内部跨度标签被删除)

<p class="server_info">
    GT 64 | Server time: 4:42:02 11/03/2014
</p>

我希望仅将文字Time更改为Server Time而不删除此内容:

<span id="serverTime">4:21:26</span>
<span id="serverDate">11/03/2014</span>

2 个答案:

答案 0 :(得分:2)

您应该使用html()函数而不是text()函数。这将保持span标签的位置:

$(".server_info").html(function(i,v) { 
   return v.replace("Time", "Server time: "); 
});

这是一个jsfiddle作为例子: http://jsfiddle.net/f5C9J/

答案 1 :(得分:0)

如果你真的必须用javascript做这件事,那么将它包装成跨度是个好主意。

<p class="server_info">
         GT 64 ms <b>|</b> <span id="time">Time</span>:

         <span id="serverTime">4:21:26</span>
         <span id="serverDate">11/03/2014</span>
</p>

然后使用替换方法。

或者你必须再次附加其他两个元素:

var serverTime = $('#serverTime');
var serverDate = $('#serverDate');

$(".server_info").text(function(i,v) { 
   return v.replace("time ", "Server time: "); 
}).append(serverTime).append(serverDate);