在<br>之后替换文本

Ahm*_*med 1 html jquery replace

我有以下html格式

<tr>
    <td width="80%" style="padding-bottom: 3px" class="ms-vb">
        <span class="ms-announcementtitle">
            title is here 1
        </span>
        <br>
        by Ahmed 1
    </td>
</tr>
<tr>
    <td width="80%" style="padding-bottom: 3px" class="ms-vb">
        <span class="ms-announcementtitle">
            title is here 2
        </span>
        <br>
        by Ahmed 2
    </td>
</tr>
<tr>
    <td width="80%" style="padding-bottom: 3px" class="ms-vb">
        <span class="ms-announcementtitle">
            title is here 3
        </span>
        <br>
        by Ahmed 3
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我想<br>在"由管理员创建" 之后替换文本by Ahmed 1 --> Created by Admin,等等......

jfr*_*d00 6

而不是操纵父对象的HTML并导致大部分表被重新分析,您可以直接使用此代码查找并替换该文本,该代码是jQuery和普通javascript的组合:

$(".ms-announcementtitle").each(function() {
    $(this).nextAll("br").get(0).nextSibling.nodeValue = "Created By Admin";
});
Run Code Online (Sandbox Code Playgroud)

这会找到spans class="ms-announcementtitle",然后找到<br>它后面的标记,然后获取该节点的DOM节点并获取nextSibling,它将成为文本节点,最后直接更改它的文本.

你可以在这里看到它的工作:http://jsfiddle.net/jfriend00/z5zVT/.

jQuery没有很多处理文本节点的函数,因为要替换的文本没有包含在它自己的容器中,最好用jQuery找到该区域,然后使用普通的javascript操作直接处理文本节点而不是修改更高级别容器的innerHTML,这会导致容器中的所有内容被重新分析.

如果您为此控制HTML,最好将所需的文本包装在a中<span class="creator">,然后您可以用更直接的方式定位该跨度的内容,如下所示:

 $(".creator").text("Created by Admin");
Run Code Online (Sandbox Code Playgroud)