我有以下代码:
function getArticleContent() {
var toPromote = 'example';
var toReplace = '<a href="/tags/'+toPromote+'">'+toPromote+'</a>';
var content = $(".a-entry").text();
if (content.search(toPromote) > -1)
{
$('.a-entry').html($('.a-entry').html().replace(new RegExp(toPromote, "g"), toReplace) );
}
else
{
//
}
}
$(document).ready(function() {
getArticleContent();
});
代码工作正常,但是如果图像或链接的title或alt属性与我要替换html的文本相同,那么它就会被删除,因为脚本会在alt或title标记中放置链接。 / p>
祝你好运
我正在尝试做这样的事情:
<div id="article">
<p>Some text here, bla bla.</p>
</div>
我希望成为JS函数之后:
<div>
<p>Some text <a href="/tags/here">here</a>, bla bla.</p>
</div>
答案 0 :(得分:2)
你可以做这样的事情,虽然可能有一个更短的方式(文本节点对我来说很少非常):
function getArticleContent() {
var toPromote = 'example';
$(".a-entry").contents().filter(function() { return this.nodeType == 3; })
.each(function() {
if(this.nodeValue.indexOf(toPromote) > -1)
$(this).replaceWith(this.nodeValue.replace(new RegExp(toPromote, "g"),
function(m) { return '<a href="/tags/'+m+'">'+m+'</a>'; })
);
});
}
$(getArticleContent);
You can try a demo here。这个文本节点专门针对文本节点nodeType == 3
进行过滤,对于.each()
,它会循环播放,如果文本在那里,则用相应的链接替换每个匹配。
答案 1 :(得分:0)
尝试使用jQuery .attr()标记对href属性或.text()上的标记进行替换,这是您希望更改的内容。
否则,显示一些标记可能有助于查看您想要的内容(在示例之前/之后)。
.attr('href',yournewstuff);
OR
.text(yournewstuff);