我正在处理一个应用程序女巫从其他网站获取其内容。在获得的内容中有时是内部链接。我需要将http://www.olddomain.com添加到这些链接的href值,以确保它们仍然适用于我的应用程序。
数据位于变量:text
变量文本包含:
<p style="text-align: right;">
Lots of text in here, with all kind of html tags, <br /><br />
when suddenly a link appears:
<a href="/niceinternalpage.html">Here!</a>
</p>
我需要输出:
<p style="text-align: right;">
Lots of text in here, with all kind of html tags, <br /><br />
when suddenly a link appears:
<a href="www.olddomain.com/niceinternalpage.html">Here!</a>
</p>
提前致谢!
答案 0 :(得分:2)
您不需要jQuery在现代浏览器中执行此操作,您可以使用document.getElementsByTagName
来获取页面上的所有a
标记:
// document.getElementsByTagName returns a `NodeList` - it looks like an `Array`
// but lacks all of the methods; so we use `Array.prototype.slice` to turn it
// into a 'real' `Array` so we can filter and loop over it.
aTags = Array.prototype.slice.call(document.getElementsByTagName("a")),
externalUrl = "http://www.olddomain.com";
// Make use of `filter` to return an Array of all `a` tags whose `href` attribute
// is unqualified (eg: does not start with `http`, again you may wish to make this
// filtering logic more complex).
//
// We then chain a `forEach` call to the result of the `filter` call which prepends
// the `externalUrl` to the `a` tag's `href` attribute.
aTags
.filter(function (aTag) {
return aTag.href.match(/^http/) === null;
})
.forEach(function(unqualifiedATag) {
var unqualifiedUrl = unqualifiedATag.href;
// Add a leading forward slash.
if (unqualifiedUrl.charAt(0) !== "/") {
unqualifiedUrl = "/" + unqualifiedUrl;
}
// Update the aTag's href attribute to fully qualify it.
unqualifiedATag.href = externalUrl + unqualifiedATag.href;
});
答案 1 :(得分:1)
您可以使用attr()分配更改href
<强> Live Demo 强>
$(variable).find('a').attr('href', function(idx, attrValue){
return 'http://www.olddomain.com' + attrValue;
});
答案 2 :(得分:0)
你可以这样做:
var $content = $(text);
$content.find('a').each(function() {
$(this).attr('href', 'http://www.olddomain.com' + $(this).attr('href') );
});
$content.insertAfter('#elementinyourpage');
我还添加了将修改后的内容插入当前页面的调用。
答案 3 :(得分:0)
var uri = $('a').attr('href');
$('a').attr('href', 'www.olddomain.com' + uri);
希望它有所帮助。
答案 4 :(得分:0)
如果您同时拥有内部和外部链接,则可以尝试使用正则表达式替换:
$('a').each(function() {
this.href = this.href.replace(/^\/(.*)/, 'http://www.externaldomain.com/$1');
});