向具有条件的链接添加属性

时间:2013-09-19 18:23:19

标签: jquery

我正在尝试确定外向链接并向其添加target =“_ blank”。但是我想添加一个过滤器并排除一些外部链接,我该怎么办?

例如:假设我的域名是mydomain.com,我想要从中获取所有外部超链接,除了 Microsoft.com,Google.com,Wikipedia.com等 _blank 如何从中排除这些网址。

这是我到目前为止所写的内容

$('a[href^="http://"]').attr('target','_blank');

1 个答案:

答案 0 :(得分:0)

您可以使用filter()来执行此操作。

这一点真的很冗长,但你可以使用三元,正则表达式或任何你想要检查几乎任何东西的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');