2012-10-17 130 views
0

我正在开发一个Chrome扩展来操作一个我没有控制权的网页,所以我不能编辑现有的css类和html代码。基于下面的例子中,我试图在段落中插入两个词之间的文本:jQuery替换函数条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.白色

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

我需要用全名,即更换名字和姓氏: 约翰·史密斯 - >约翰·史密斯

我试过如下:

$(".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和用全名替换它。我怎样才能让它显示包含中间名首字母的段落?

+0

它直接是不是你在找什么,但是这是接近http://stackoverflow.com/questions/2349138/jquery- find-and-replace-text-without-element-id –

回答

3

因为text()删除标签,只是给你的文字。

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

1

这可能是你想要什么:

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

jsfiddle link

+0

是的,这也很好,谢谢。 – abalone