jQuery:将文件类型类添加到任何文件类型的链接

时间:2012-11-23 15:56:42

标签: javascript jquery regex

$("a[href $='.pdf']" ).addClass("linkIconPDF");
$("a[href *='.pdf#']").addClass("linkIconPDF");
$("a[href *='.pdf;']").addClass("linkIconPDF");
$("a[href *='.pdf?']").addClass("linkIconPDF");

$("a[href $='.txt']" ).addClass("linkIconTXT");
$("a[href *='.txt#']").addClass("linkIconTXT");
$("a[href *='.txt;']").addClass("linkIconTXT");
$("a[href *='.txt?']").addClass("linkIconTXT");

到目前为止一直很好,但如何简化以匹配任何文件类型?

是否可以进行一些正则表达式分组以匹配所有可能的文件类型?

$("a[href $='.([a-zA-Z0-9]{2,4})']" ).addClass("linkIcon$1");

测试脚本:http://jsfiddle.net/k2jqn/

4 个答案:

答案 0 :(得分:6)

$("a").each(function(){
    var match = this.href.match(/\.([a-zA-Z0-9]{2,4})([#;?]|$)/);
    if(match){
        $(this).addClass("linkIcon" + match[1]);
    }
});

示范:http://jsfiddle.net/k2jqn/4/

答案 1 :(得分:1)

您只需使用通配符选择器:

$("a[href*='.pdf']" ).addClass("linkIconPDF");
$("a[href*='.txt']" ).addClass("linkIconTXT");

以通配符方式选择链接。

答案 2 :(得分:1)

为什么不试试这个

$("a[href $='.$']" ).addClass("linkIconANYFILE");

答案 3 :(得分:1)

具有每个函数的数组是否优于使用正则表达式选择器?

var fileTypes = new Array("a[href $='.pdf']","a[href *='.pdf#']");
fileTypes.each(function(index,val){
    $(val).addClass('LinkIconPDF');
});