我正在尝试确定传出链接并将 target=”_blank” 添加到它们。但是我想添加一个过滤器并排除一些外部链接,我该怎么做?
例如:假设我的域是 mydomain.com,我希望从它发出的所有外部超链接都具有 target=_blank ,但Microsoft.com、Google.com、Wikipedia.com 等除外。我如何排除这些 url。
这是我到目前为止所写的
$('a[href^="http://"]').attr('target','_blank');
我正在尝试确定传出链接并将 target=”_blank” 添加到它们。但是我想添加一个过滤器并排除一些外部链接,我该怎么做?
例如:假设我的域是 mydomain.com,我希望从它发出的所有外部超链接都具有 target=_blank ,但Microsoft.com、Google.com、Wikipedia.com 等除外。我如何排除这些 url。
这是我到目前为止所写的
$('a[href^="http://"]').attr('target','_blank');
你可以使用 afilter()
来做到这一点。
这确实很冗长,但您可以使用三元、正则表达式或任何您想检查 href 的东西来检查几乎任何东西:
$('a').filter(function() {
var ret = false;
if ( this.href.indexOf('http://') === 0 ) { // everything that starts with http://
if ( this.href.indexOf('http://google.com') === 0 ) { // starts with ...
ret = true;
}
// or if
if ( this.href.indexOf('microsoft.com') != -1 ) { // href contains microsoft.com
ret = true;
}
}
return ret;
}).attr('target','_blank');
使用正则表达式:
$('a').filter(function() {
var rgx = new RegExp('/^(?:http(?:s)?:\/\/)?(?:[^\.]+\.)?(microsoft\.com|google\.com|yahoo\.com)$/','gi');
return this.href.match(rgx);
}).attr('target','_blank');