如果链接包含特定文本,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");