Javascript替换问题(使用alt和title atribbutes)
我有以下代码:Javascript替换问题(使用alt和title atribbutes),javascript,jquery,regex,Javascript,Jquery,Regex,我有以下代码: function getArticleContent() { var toPromote = 'example'; var toReplace = '<a href="/tags/'+toPromote+'">'+toPromote+'</a>'; var content = $(".a-entry").text(); if (content.search(toPromote) > -1) {
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();
});
函数getArticleContent(){
var toPromote='示例';
var-toReplace='';
var content=$(“.a-entry”).text();
if(content.search(toPromote)>-1)
{
$('.a-entry').html($('.a-entry').html().replace(新的RegExp(toPromote,“g”),toReplace));
}
其他的
{
//
}
}
$(文档).ready(函数(){
getArticleContent();
});
代码工作正常,但如果图像或链接的title或alt属性与我要替换html的文本相同,则代码将被破坏,因为脚本将链接放在alt或title标记中
致意
我正在尝试这样做:
<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>
一些文字,等等
尝试使用jQuery.attr()标记替换href属性或其.text()上的标记,这是您希望更改的内容
否则,显示一些标记可能会有助于查看您到底想要什么(在示例之前/之后)
或
您可以这样做,但可能有一种更短的方法(文本节点对我来说非常罕见): 函数getArticleContent(){ var toPromote='示例'; $(“.a-entry”).contents().filter(函数(){返回this.nodeType==3;}) .each(函数({ 如果(此节点值索引of(toPromote)>-1) $(this.replaceWith)(this.nodeValue.replace)(新的RegExp(toPromote,“g”), 函数(m){返回“”;}) ); }); } $(getArticleContent);
。这会专门过滤文本节点,对于其中的文本节点,它会循环浏览,如果文本存在,则会将每个匹配项替换为相应的链接。他们这样说是有原因的。它们混不好。使用dom解析器。+1-我喜欢使用内容、过滤器和节点类型。回答很好。脚本可以工作,但它可以从BD获得文章的详细信息和标签,例如:我的文本在这里…Thx但仍然不工作,我想我会休息一下,然后尝试后一种方法,Thx获得答案:)@iulian-这是一个与您的示例完全相同的版本:
.attr('href',yournewstuff);
.text(yournewstuff);
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);