我需要将所有链接(href值)转换为特定格式
例如 - 如果网页有链接http://www.exampledomain.com我想将其href转换为http://url.com/xyz?http://www.example.com
以下是我用于此任务的jquery(请注意,我是jquery的新手)
$( document ).ready(function() {
$('a').each(function() {
var value = $(this).attr('href');
$(this).attr('href','http://url.com/xyz?'+value);
});
});
但是上面的脚本正在转换网站的所有链接,我的导航链接也会发生变化。 我们如何过滤以仅更改包含“http”和“www”的链接的href?
我知道某种正则表达式可用于此目的。提前谢谢!
答案 0 :(得分:1)
我认为你应该提取所有内部链接。
您可以检查值是否符合您的条件(http://www
):
$( document ).ready(function() {
$('a').each(function() {
var value = $(this).attr('href');
if(value.indexOf("http:\\www") > -1 ){
$(this).attr('href','http://url.com/xyz?'+value);
}
});
但最好提取所有内部链接:
var myHost = new RegExp(location.host);
$('a').each(function(){
var value = $(this).attr('href');
if(!(myHost.test(value))){
$(this).attr('href','http://url.com/xyz?'+value);
}
});
最后也是更好的选择是只接受外部链接:(如果你不需要对内部做任何事情)
$( document ).ready(function() {
$("a[href^='http']").each(function() {
var value = $(this).attr('href');
$(this).attr('href','http://url.com/xyz?'+value);
}
});
答案 1 :(得分:1)
您可以检查链接是外部链接还是内部链接,然后您可以添加额外的工作。
$( document ).ready(function() {
$('a').each(function() {
var value = $(this).attr('href');
if($(this[href^='http'])
{
$(this).attr('href','http://url.com/xyz?'+value);
}
});
});
答案 2 :(得分:1)
您可以尝试以下代码
$( document ).ready(function() {
$('a').each(function() {
var value = $(this).attr('href');
if(value.match("http://www.*"))
{
$(this).attr('href','http://url.com/xyz?'+value);
}
});
});
您必须确保没有包含
的导航链接"http://www"
在他们中间。使用您不想替换href的相对链接。
或者您可以为要修改的所有锚标签提供一个类
答案 3 :(得分:1)
<强> Demo Fiddle
强>
使用元素检查器检查锚标记的href
$('a').each(function() {
var a = new RegExp('/' + window.location.host + '/');
if(!a.test(this.href)) {
var value = $(this).attr('href');
$(this).attr('href','http://url.com/xyz?'+value);
}
});
在CSS-Tricks.com上从this article修改
答案 4 :(得分:1)
一种方法:
// selects all 'a' elements:
$('a')
// sets the 'href' attribute, using the anonymous function to iterate over each
// 'a' element:
.attr('href', function(i,oldhref){
// i: the index of the current element in the returned collection,
// oldhref: the value of the 'href' before manipulation by the function.
// if 'exampledomain.com' features in the hostname of the link we
// manipulate the 'href' as required, otherwise we simply set the 'href'
// to its original value:
return this.hostname.indexOf('exampledomain.com') > -1 ? 'www.url.com/xyz?' + oldhref : oldhref;
});
参考文献: