我想编写一个可以确定链接是内部还是外部的脚本。从我的角度来看,这很简单,所有内部链接都是相对的,因此它们以/开头。所有外部链接均以http://开头-到目前为止一切正常。但是我不知道如何对文本以外的其他东西执行':contains()'-如何在属性内搜索字符串?
一旦能够做到这一点,我很乐意自己添加target _blank,除非您知道一种更好的方法
最佳答案
您可以使用attribute^=value
语法查找以http
或/
开头的hrefs:
$("a[href^='http']") // external
$("a[href^='/']") // internal
这是一个更好的解决方案:您可以使用以下插件代码向jQuery添加
$('a:external')
和$('a:internal')
选择器。以http://
,https://
或whatever://
开头的任何URL均被视为外部URL。 $.expr[':'].external = function (a) {
var PATTERN_FOR_EXTERNAL_URLS = /^(\w+:)?\/\//;
var href = $(a).attr('href');
return href !== undefined && href.search(PATTERN_FOR_EXTERNAL_URLS) !== -1;
};
$.expr[':'].internal = function (a) {
return $(a).attr('href') !== undefined && !$.expr[':'].external(a);
};