我想写一个脚本,可以确定链接是内部链接还是外部链接.从我的角度来看这很简单,所有内部链接都是相对的,因此它们以/开头.所有外部链接都以http://开头 - 到目前为止一切都很好.但是我无法弄清楚如何在除文本之外的任何内容上执行':contains()' - 如何在属性中搜索字符串?
一旦我能做到这一点,我很高兴自己添加target _blank,除非你知道更好的方法
Pat*_*ney 22
您可以使用attribute^=value语法查找以http或开头的href /:
$("a[href^='http']") // external
$("a[href^='/']") // internal
Run Code Online (Sandbox Code Playgroud)
这是一个更好的解决方案:您可以使用下面的插件代码添加$('a:external')和$('a:internal')选择jQuery.任何开头http://,https://或被whatever://视为外部的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);
};
Run Code Online (Sandbox Code Playgroud)
我正在为我的CMS使用WordPress,因此大多数(如果不是全部)我的内部链接都以"http"开头.我在这里找到了一个非常有趣的解决方案:http://www.focal55.com/blog/jquery-tutorial-add-class-all-outbound-links-your-site
如果网站关闭,它基本上归结为这个选择器(我修改了一下):
$( 'a[href^="//"],a[href^="http"]' )
.not( '[href*="' + window.location.hostname + '"]' )
;
Run Code Online (Sandbox Code Playgroud)
请注意,根据jQuery文档,此选择器不会是最快的.
| 归档时间: |
|
| 查看次数: |
15062 次 |
| 最近记录: |