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

each 関数を含む配列は、正規表現セレクターを使用するよりも優れていますか?

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