在jquery中替换标签之间的文本节点?

时间:2013-03-25 02:17:55

标签: javascript jquery

我已经找到了我的问题的答案,但无法找到它。这是我拥有的HTML,无法改变:

<div class="metadata"> 
    <span class="meta"> 
        <span>    
        </span>     
    </span> 
    <a class="sourceTitle" href="#">Link to site</a> 
      11d

     &nbsp;//&nbsp; 
    <span class="action">preview</span> 
</div>

基本上我需要将11d更改为March 13th之类的内容。我想出了它背后的所有算法,但不能为上帝的爱找到替代它的方法。我在这里有一个JSFiddle:http://jsfiddle.net/7tPTu/2/

3 个答案:

答案 0 :(得分:4)

选择文本节点,然后替换文本:

var text = $(".metadata").contents().filter(function () {
    return this.nodeType === 3;
}).wrap("<span class='textNode'>");

var target = $("span.textNode:contains('11d')");
target.text(target.text().replace(/11d/, "March 13th"));

演示:http://jsfiddle.net/DerekL/eBwjT/

答案 1 :(得分:0)

你想把“11d”放入自己的范围并给它一个id。 然后你可以这样做:

$("#yourSpanId").text(yourText);

这将使用yourText更新yourSpanId。 (如果您要对字符串进行硬编码,则需要输入引号:

$("#yourSpanId").text("some text");

答案 2 :(得分:0)

您也可以使用innerHTML或innerText属性在没有jQuery的情况下执行此操作。

document.querySelector(".sourceTitle").innerHTML = "March 13th";