8
$("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

4 回答 4

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/

于 2012-11-23T16:00:25.107 回答
1

您可以简单地使用通配符选择器:

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

它以通配符方式选择链接。

于 2012-11-23T16:00:41.007 回答
1

为什么不试试这个

$("a[href $='.$']" ).addClass("linkIconANYFILE");
于 2012-11-23T16:01:52.113 回答
1

带有每个函数的数组会比使用正则表达式选择器更好吗?

var fileTypes = new Array("a[href $='.pdf']","a[href *='.pdf#']");
fileTypes.each(function(index,val){
    $(val).addClass('LinkIconPDF');
});
于 2012-11-23T16:03:41.980 回答