Javascript jQuery选择器和不同类型的href链接-为链接添加正确的CSS类

Javascript jQuery选择器和不同类型的href链接-为链接添加正确的CSS类,javascript,jquery,html,Javascript,Jquery,Html,我有一个HTML文件,其中包含多个不同类型的标签,只有href属性 任务是为不同的标签添加正确的CSS类。例如,如果链接有一个后缀.zip,那么它将获得一个外部CSS类。带有后缀.pdf的标记将获得CSS类pdf。其他外部和内部链接获取外部CSS类 它工作正常。。几乎问题是链接没有明确的后缀.html、.zip或前缀http://、www、../ $document.readyfunction{ $a[href$='.pdf'].addClasspdf; $a[href*='.htm']、a[

我有一个HTML文件,其中包含多个不同类型的标签,只有href属性

任务是为不同的标签添加正确的CSS类。例如,如果链接有一个后缀.zip,那么它将获得一个外部CSS类。带有后缀.pdf的标记将获得CSS类pdf。其他外部和内部链接获取外部CSS类

它工作正常。。几乎问题是链接没有明确的后缀.html、.zip或前缀http://、www、../

$document.readyfunction{ $a[href$='.pdf'].addClasspdf; $a[href*='.htm']、a[href^='www.],a[href^=http],a[href*='://'].addClassexternal; $a[href].nota[href$='.pdf'].nota[href*='.htm'].nota[href$='/'].nota[href*='www'].addClassdownload; }; .pdf{ 字号:900; 颜色:黑色; } .外部{ 字号:900; 颜色:绿色; } .下载{ 字号:900; 颜色:红色; }
要使其最可靠地工作,您需要检测.pdf链接和所有下载链接;这意味着您需要维护所有有效下载文件扩展名的列表。任何不符合上述任一标准的内容都将成为“外部”链接

然后,可以在提供给addClass的函数中使用正则表达式检测文件扩展名。其逻辑如下所示:

$'a'.addClassfunction{ var href=$this.attr'href'; if/\.pdf$/.testhref 返回‘pdf’; if/\.zip |\.exe$/.testhref 返回“下载”; 返回“外部”; }; .pdf{color:C00;} .下载{color:0C0;} .external{color:CCC;}
这是一种不同的方法,但Basicali也这么做

在本文中,我检查了每个链接,并检查它是否包含您的变量、PDF、Zip、EXE等。您可以添加任意数量的变量-如果它不包含任何这些变量,则添加外部类

$document.readyfunction{ var allLinks=$a[href]; allLinks.eachfunction索引{ 如果$this.attr'href'.indexOf.pdf>=0{ $'a[href='+$this.attr'href'+']'.addClass'pdf' }否则如果$this.attr'href'.indexOf.zip>=0 | |$this.attr'href'.indexOf.exe>=0{ $'a[href='+$this.attr'href'+']'.addClass'download'; }否则{ $'a[href='+$this.attr'href'+']'.addClass'external'; } console.log index+:+$this.text+Class=+$this.attr'Class'; }; };
你可以让任何非文件URL以/结尾。我给你做了一个链接,你的下载会得到一个外部链接seems@mplungjan非常感谢。我用我的CSS编辑了你的reprex。如果可以的话?当然可以。它只是不显示图标,所以在这里给它们一个颜色。这看起来比我的回答更清晰:-谢谢你的例子!我不记得提到的是:如果需要下载CSS类的链接可能是随机文件类型,该怎么办?例如,它可以是.7zip,docx。。。我将在Description中添加此信息,因为我不知道您可以在其中运行函数addclass@markspl_这就是我在回答中所说的“您需要手动维护一个可下载文件扩展名列表”的意思。@Stender有很多jQuery方法接受函数。这是一个非常有用的模式,可以避免创建显式循环