【发布时间】:2019-10-09 17:48:53
【问题描述】:
我有一个 HTML 文件,其中包含多个不同类型的“a”标签,只有 href 属性。
任务是为不同的“a”标签添加正确的 CSS 类。例如,如果链接有一个后缀 .zip,它会得到一个 CSS 类“外部”。带有后缀 .pdf 的“a”标签获得一个 CSS 类“pdf”。其他外部和内部链接获取 CSS 类“外部”。
它工作正常.. 几乎。问题在于没有明确后缀(“.html”、“.zip”)或前缀(“http://”、“www.”、“../”)的链接。
$(document).ready(function() {
$("a[href$='.pdf']").addClass("pdf");
$("a[href*='.htm'], a[href^='www.'], a[href^=http], a[href*='://']").addClass("external");
$("a[href]").not("a[href$='.pdf']").not("a[href*='.htm']").not("a[href$='/']").not("a[href*='www']").addClass("download");
});
.pdf {
font-weight:900;
color: black;
}
.external {
font-weight:900;
color: green;
}
.download {
font-weight:900;
color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<li><a href="www.google.com">google</a></li>
<!-- CLASS EXTERNAL -->
<li><a href="ticket.pdf">my flight ticket</a></li>
<!-- CLASS PDF -->
<li><a href="backup/2019.zip">my backup.zip</a></li>
<!-- CLASS DOWNLOAD -->
<li><a href="http://randommm.com/file.exe">download exe file</a></li>
<!-- CLASS DOWNLOAD -->
<li><a href="my/normal">my/normal</a></li>
<!-- CLASS EXTERNAL -->
<li><a href="/normal">/normal</a></li>
<!-- CLASS EXTERNAL -->
<li><a href="test.htm">test.htm</a></li>
<!-- CLASS EXTERNAL -->
<li><a href="mysite.com">mysite.com</a></li>
<!-- CLASS EXTERNAL -->
<li><a href="/mysite">/mysite</a></li>
<!-- CLASS EXTERNAL -->
结果:
如您所见,不指向文件的内部和外部链接会得到错误的 CSS 类,因为我的代码中的最后一行。
我尝试选择带有$("a[href^='/']) 的标签,但这没有给出任何结果。
注意:链接地址可以是任何东西,所以我不能使用选择器通过其名称来查找特定链接。 另外,我不记得写了,可下载的文件类型也可以是任何东西,但文件“pdf”有自己的类“pdf”。
【问题讨论】:
-
您可以让任何非文件 URL 以
/结尾。 -
你的下载似乎是外部的
-
@mplungjan 谢谢!我用我正在使用的 CSS 编辑了你的代表。如果这样可以吗?
-
当然。它只是不显示图标,所以在这里给它们一个颜色。
标签: javascript jquery html