0

我正在开发一个 Chrome 扩展程序来操作我无法控制的网页,因此我无法编辑现有的 css 类和 html 代码。基于以下示例,我试图在段落中的两个单词之间插入文本:

<p class="abc">
<b>Title:</b>The Second Title
<br>
<b>Author:</b>Mary White
<br>
<b>Date:</b>2004
</p>
<p class="abc">
<b>Title:</b>The First Title
<br>
<b>Author:</b>John Smith
<br>
<b>Date:</b>2003
</p>

我有一个名称列表,例如:

玛丽·怀特 -> 玛丽·B·怀特

约翰·史密斯 -> 约翰·L·史密斯

我需要用全名替换名字和姓氏,即:John Smith -> John L. Smith

我尝试了以下方法:

$(".abc:contains('Mary White')").text(function () {
  return $(this).text().replace("Mary White", "Mary B. White");
});

但这会删除<b><br>html 标签。

我也试过这个:

$(".htp:contains('John Smith')").replaceWith("John L. Smith");

但这会替换整个 p 并将其替换为全名。如何让它显示名称包含中间首字母的段落?

4

2 回答 2

3

因为text()删除了标签,只给你文本。

使用.html(),但如果名称中有任何 html 标记,您的代码将失败。

于 2012-10-17T23:20:16.967 回答
1

这可能是你想要的:

$(function() {
    $(".abc").each(function(idx, elm) {
        elm.innerHTML = elm.innerHTML.replace("Mary White", "Mary B. White");
    });
});​

jsfiddle链接

于 2012-10-17T23:38:25.990 回答