【问题标题】:jQuery: Adding a class to all downloadable linksjQuery:向所有可下载链接添加一个类
【发布时间】:2018-04-21 10:20:36
【问题描述】:

我正在尝试将.dl 类添加到除.pdf.html 之外的所有具有任何 文件后缀(扩展名)的链接。我不希望我的其他(外部和内部)链接受到影响。

$('a').not("a[href^='http://'], a[href^='https://'], a[href^='/'], a[href^='./'], a[href^='../'], a[href^='#'], a[href$='.pdf'], a[href$='.html']").addClass( 'dl' );

使用我的代码,一些相关和外部链接会受到影响。我能做些什么来修复它?

谢谢!

【问题讨论】:

  • 只是想知道您不能选择应该受影响的链接而不是删除其他链接吗?
  • @kevinSpaceyIsKeyserSöze 好点...
  • @kevinSpaceyIsKeyserSöze 我有许多不同的文件后缀。也许有一种方法可以检查链接是否有后缀,那么这是可能的。但是我没有找到解决方法

标签: jquery hyperlink selector external internal


【解决方案1】:

这是一种您可以考虑尝试的方法。

文件名数组代表你要添加类的所有后缀。

var fileNames = ["suffix1", "suffix2"];

$("a").each(function(index, element){
  fileNames.forEach(function(fileName){
    if($(element).attr("href").startsWith(fileName)){
      $(element).addClass("dl");
    }
  });
});
.dl {
  color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="suffix1">addClass suffix1</a>
<a href="http://">don't add</a>
<a href="suffix2">addClass suffix2</a>
<a href="https://">don't add</a>

【讨论】:

  • 不幸的是,它在我的情况下不起作用,因为我可以有任何文件后缀(扩展名)。除了列出所有这些之外,我需要找到另一种方法。
  • @jphawk 是的,那么您的方法似乎是非常正确的。之前不能给内容加类吗?
  • 不,这不是一个选项。我通过在 jQuery filter() 函数中使用一些 Javascript 解决了这个问题。检查了我所有链接的最后一部分(在链接中的最后一个“/”之后),并在 jQuery 中使用 .not() 分别排除了 .pdf 和 .html。但是如果可以在不混合 jQuery 和 Javascript 的情况下,在纯 jQuery 中做到这一点,这仍然很有趣。
  • @jphawk 你可以试试a[href$=':not(:contains(".pdf")']
猜你喜欢
  • 2021-10-09
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 2011-09-27
  • 2011-05-17
  • 2013-09-09
  • 1970-01-01
  • 2016-07-22
相关资源
最近更新 更多