7

我的网站列表中有一些动态填充的链接,这些链接链接到文件。是否可以使用 jQuery 查看文件名是否以 .pdf 结尾,如果链接文本以 .mp3 结尾,则向 href 或类似内容添加一个类?

例如,我的列表中有以下链接:

  • 文档1.pdf
  • 歌曲1.mp3
  • 歌曲2.m4a
  • 文档2.doc

我想检测结尾字母并向链接添加不同的类,因此对于具有文本 Document1.pdf 的链接,我将类添加pdf到锚元素,并将带有文本 Song1.mp3 的链接添加将类添加mp3到锚元素。

4

4 回答 4

35

使用属性选择器:

$('a[href$=".mp3"]')...

选项:

    属性包含前缀选择器 [name|="value"]
    选择具有指定属性和值的元素
    等于给定字符串或以该字符串开头
    用连字符 (-)。

    属性包含选择器 [name*="value"]
    选择具有指定属性的元素
    包含给定子字符串的值。

    属性包含单词选择器 [name~="value"]
    选择具有指定属性和值的元素
    包含给定的单词,由空格分隔。

    属性以选择器结尾 [name$="value"]
    选择具有指定属性的元素
    以给定字符串结尾的值。比较区分大小写。

    属性等于选择器 [name="value"]
    选择具有指定属性的元素
    值完全等于某个值。

    属性不等于选择器 [name!="value"]
    选择不具有指定属性的元素,
    或者确实具有指定的属性但没有特定的值。

    属性以选择器 [name^="value"] 开头
    选择具有指定属性的元素
    值正好以给定的字符串开头。

    具有属性选择器 [名称]
    选择具有指定属性且具有任何值的元素。

    多属性选择器 [name="value"][name2="value2"]
    匹配与所有指定属性过滤器匹配的元素。

查看 API以获取更多信息。

于 2013-04-08T12:36:30.367 回答
1

鉴于您的所有此类链接都有课程.file

var exts = ['pdf','xls'];
$('a.file').each(function(){
    if($(this).attr('href').match(new RegExp('('+exts.join('|')+')'), 'gi'))
        $(this).addClass($(this).attr('href').match(/\w{3}$/gi)[0]);
})

此代码会将扩展exts类添加到数组中具有文件扩展名的所有此类链接。

于 2013-04-08T12:44:12.263 回答
0

除了对所有类型进行硬编码之外,您还可以制定一个解决方案,自动为所有链接执行此操作:

var regex = "/\..{3,4}$/";
$('a').each(function() {
    $(this).addClass(regex.match($(this).attr("href"))[0]
});
于 2013-04-08T12:45:24.003 回答
-1
$('a[href$=".mp3"]').addClass("mp3");
$('a[href$=".pdf"]').addClass("pdf");
于 2013-04-08T12:37:37.800 回答