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

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

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

  • Document1.pdf
  • Song1.mp3
  • Song2.m4a
  • Document2.doc

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

使用属性选择器:

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

选项:

     属性包含前缀选择器[name | =“value”]
    选择具有指定属性值的元素 
    要么等于给定的字符串,要么以该字符串开头 
    用连字符( - )表示。

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

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

     属性结束于选择器[name $ =“value”]
    选择具有指定属性的元素 
    值与给定字符串完全结束。 比较区分大小写。

     属性等于选择器[name =“value”]
    选择具有指定属性的元素 
    值恰好等于某个值。

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

     属性从选择器开始[name ^ =“value”]
    选择具有指定属性的元素 
    值以一个给定的字符串开头。

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

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

查看API以获取更多信息。

鉴于你所有这些链接都有类.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数组中具有文件扩展名的所有此类链接。

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

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