jquery - 使用 jQuery 检查链接是内部链接还是外部链接

标签 jquery

我想编写一个脚本来确定链接是内部链接还是外部链接。从我的角度来看,这很简单,所有内部链接都是相对的,因此它们以/开头。所有外部链接都以 http://开头 - 到目前为止一切都很好。但是,我不知道如何对文本以外的任何内容执行 ':contains()' - 如何在属性中搜索字符串?

一旦我能做到这一点,我很乐意自己添加 target _blank,除非您知道更好的方法

最佳答案

您可以使用attribute^=value查找以 http/ 开头的 href 的语法:

$("a[href^='http']") // external
 
$("a[href^='/']") // internal
<小时/>

这里有一个更好的解决方案:您可以使用下面的插件代码将 $('a:external')$('a:internal') 选择器添加到 jQuery 。任何以 http://https://whatever://// 开头的 URL被认为是外部的。所有其他 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);
    };

关于jquery - 使用 jQuery 检查链接是内部链接还是外部链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1227631/

相关文章:

javascript - 使用切换按钮删除容器

javascript - jquery animate scrollTop 无法在 FireFox 或 IE 上运行

jquery - 动态创建的 div 中图像旁边的居中文本。查询

javascript - jQuery 在动画后更新元素的 css 高度

javascript - 使用 JQuery .val() 清除文本区域后如何删除多余的换行符

javascript - .closest().find().text() 查找多个元素内部文本

javascript - 将原型(prototype) Ajax 函数转换为 jQuery

javascript - 单击时 Bootstrap 选项卡不起作用

javascript - 为什么不在 DOM 中的对象缺少 jQuery 中的 on 方法?

javascript - 为什么我的 JavaScript 函数只能在索引 View 中工作?