jQuery添加类到href如果链接包含特定文本

7
我网站上的列表中有一些动态生成的链接,这些链接指向文件。是否可以使用jQuery来检查文件名是否以.pdf结尾,并在链接文本以.mp3结尾时添加类到href或类似的内容?
例如,我在我的列表中有以下链接:
- Document1.pdf - Song1.mp3 - Song2.m4a - Document2.doc
我想检测结尾字母并为链接添加不同的类,因此对于具有文本Document1.pdf的链接,我将在锚元素中添加类pdf,而对于具有文本Song1.mp3的链接,我将在锚元素中添加类mp3。
4个回答

35
使用属性选择器:
$('a[href$=".mp3"]')...

选项:

    属性包含前缀选择器 [name|="value"]
    选择具有指定属性值的元素,该值等于给定字符串或以该字符串后跟连字符(-)开头。
属性包含选择器 [name*="value"] 选择具有包含给定子字符串的指定属性值的元素。
属性包含单词选择器 [name~="value"] 选择具有包含给定单词(由空格分隔)的指定属性值的元素。
属性结尾选择器 [name$="value"] 选择具有以给定字符串精确结尾的指定属性值的元素。比较区分大小写。
属性等于选择器 [name="value"] 选择具有与特定值完全相等的指定属性值的元素。
属性不等于选择器 [name!="value"] 选择没有指定属性或具有指定属性但不存在特定值的元素。
属性开始选择器 [name^="value"] 选择具有以给定字符串开头的指定属性值的元素。
具有属性选择器 [name] 选择具有指定属性的元素,其值可以是任何值。
多属性选择器 [name="value"][name2="value2"] 匹配同时满足所有指定属性过滤器的元素。

查看API获取更多信息。


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数组中的文件扩展名对应的链接添加extension类。

0

不必硬编码所有类型,您还可以创建一个解决方案,自动为所有链接执行此操作:

var regex = "/\..{3,4}$/";
$('a').each(function() {
    $(this).addClass(regex.match($(this).attr("href"))[0]
});

-1
$('a[href$=".mp3"]').addClass("mp3");
$('a[href$=".pdf"]').addClass("pdf");

抱歉,也许第二个应该这样说 - Eoin
$('a[href$=".pdf"]').addClass("pdf"); - Eoin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接