我有这个工具,它使用本地页面的硬链接和相对链接。 (我没有构建它)我现在需要对外部链接进行分类。试过这个,但它被卡在'else if'级别。我究竟做错了什么?如果没有'else if',它会错误地将一些本地链接标记为外部链接,但有了它,没有任何反应。
jQuery(document).ready(function() {
var comp = new RegExp(location.host);
jQuery('a').each(function(){
if(comp.test(jQuery(this).attr('href'))) {
jQuery(this).addClass('local');
}
else if(jQuery(this)('a[href$="ABC"]')) {
jQuery(this).addClass('local2');
}
else {
jQuery(this).addClass('external');
}
});
答案 0 :(得分:3)
您现有的代码无效,应显示控制台错误,因为以下内容不是有效表达式:
jQuery(this)('a[href$="ABC"]')
由于您通常只需要识别外部链接,并且任何内部链接都被视为相同(绝对或相对)我有这个jQuery选择器,它将匹配所有可能的外部链接(包括电子邮件和放大器) ;文件链接等):
'a[href*="://"]:not(a[href^="' + window.location.protocol + '//' + window.location.hostname + '"]),a[href^="mailto:"]'
JSFiddle: http://jsfiddle.net/TrueBlueAussie/qxn8L86a/10/
简化版(如果您的网站没有绝对本地链接):
$('a[href*="://"],a[href^="mailto:"]').addClass("external");
JSFiddle: http://jsfiddle.net/TrueBlueAussie/qxn8L86a/8/
要将类添加到本地链接,您只需排除外部链接:
e.g。
$('a').not($('a[href*="://"],a[href^="mailto:"]').addClass("external")).addClass("local");
JSFiddle: http://jsfiddle.net/TrueBlueAussie/qxn8L86a/9/
参考(我的问题):RegEx expression or jQuery selector to NOT match "external" links in href