jQuery替换功能条html

时间:2012-10-17 23:18:50

标签: jquery google-chrome-extension

我正在开发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>

我有一个名单列表,如:

Mary White - &gt; Mary B. White

John Smith - &gt;约翰·L·史密斯

我需要用全名替换名字和姓氏,即: 约翰史密斯 - &gt;约翰·L·史密斯

我尝试了以下内容:

$(".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并用全名替换它。如何让它显示名称中包含中间名的段落?

2 个答案:

答案 0 :(得分:3)

因为text()删除了代码,只是为您提供了文字。

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

答案 1 :(得分:1)

这可能是你想要的:

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

jsfiddle link