jQuery:选择所有内部链接,不包括可下载文件的链接

标签 jquery hyperlink internal

我正在使用以下 jQuery 代码来选择所有内部链接...

var siteURL = "http://" + top.location.host.toString();
var $internalLinks = $("a[href^='"+siteURL+"'], a[href^='/'], a[href^='./'], a[href^='../'], a[href^='#']");

而且效果很好。我面临的唯一问题是我不想选择直接指向可下载文件的内部链接(例如 http://www.example.com/downloadable.pdf )

扩展名可以是任何内容(pdf、mp3、jpg、gif、webm ...等)

现在的问题是,如何从上述条件中排除此类内部链接?

或者,如果我使用 .not() 函数来排除此类链接,问题是,如何选择直接指向此类可下载文件的所有内部链接?

最佳答案

一个简单的解决方案是使用filternot与正则表达式来拒绝您不想要的链接:

var $internalLinks = $("a[href^='"+siteURL+"'], a[href^='/'], a[href^='./'], a[href^='../'], a[href^='#']");

$internalLinks = $internalLinks.not(function () {
  return $(this).attr('href').match(/\.(pdf|mp3|jpg|jpeg|etc)$/i);
});

相反,假设所有“不可下载”的网址都以 .html.htm 结尾,则会过滤链接带有这些扩展:

$internalLinks = $internalLinks.filter(function () {
  return $(this).attr('href').match(/\.html?/);
});

关于jQuery:选择所有内部链接,不包括可下载文件的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702816/

相关文章:

html - REST/Ajax 深度链接兼容性 - anchor 标记与查询字符串

jquery - 使用 JQuery ajax post 使用 WCF/REST 服务

swift - 当我在 Swift 4 中显式使用内部访问控制级别时

curl - 将 paypal curl get access token 请求转换为 guzzle

javascript - json2html如何在字段不存在时排除行

javascript - 如何在页面调整大小时保持 div 可见?

html - 使用 CSS/HTML 使点击事件一次性工作的方法

html 基础和子目录

javascript - 定时器重置功能不起作用!

javascript - 将逗号分隔值传递给 ASP.NET MVC 操作方法