7

サイトのリストに、ファイルにリンクする動的に入力されたリンクがいくつかあります。jQuery を使用して、ファイルの名前が .pdf で終わっているかどうかを確認し、リンク テキストが .mp3 で終わっている場合は、href などにクラスを追加することはできますか?

たとえば、リストに次のリンクがあります。

  • Document1.pdf
  • 曲1.mp3
  • Song2.m4a
  • Document2.doc

末尾の文字を検出し、さまざまなクラスをリンクに追加したいので、テキスト Document1.pdf を持つリンクにクラスpdfをアンカー要素に追加し、テキスト Song1.mp3 を持つリンクを追加しますクラスmp3をアンカー要素に追加します。

4

4 に答える 4

35

属性セレクターを使用します。

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

オプション:

    属性に含まれるプレフィックス セレクター [name|="value"]
    値を持つ指定された属性を持つ要素を選択します
    指定された文字列と等しいか、その文字列で始まる
    ハイフン (-) によって。

    属性に含まれるセレクター [name*="value"]
    指定された属性を持つ要素を
    指定された部分文字列を含む値。

    属性に単語セレクタ [name~="value"] が含まれています
    値を持つ指定された属性を持つ要素を選択します
    スペースで区切られた特定の単語を含む。

    セレクターで終わる属性 [name$="value"]
    指定された属性を持つ要素を
    指定された文字列で正確に終わる値。比較では大文字と小文字が区別されます。

    属性がセレクタ [name="value"] に等しい
    指定された属性を持つ要素を
    特定の値と正確に等しい値。

    属性が等しくないセレクタ [name!="value"]
    指定された属性を持たない要素を選択します。
    または、指定された属性を持っていますが、特定の値を持っていません。

    セレクター [name^="value"] で始まる属性
    指定された属性を持つ要素を
    指定された文字列で正確に始まる値。

    属性セレクター [名前] を持っています
    指定された属性を持つ要素を任意の値で選択します。

    複数属性セレクター [name="value"][name2="value2"]
    指定されたすべての属性フィルターに一致する要素に一致します。

追加情報については、API を確認してください。

于 2013-04-08T12:36:30.367 に答える
1

あなたのそのようなすべてのリンクがクラスを持っているとすれば.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

于 2013-04-08T12:44:12.263 に答える
0

すべてのタイプをハードコーディングするのではなく、すべてのリンクに対してこれを自動的に行うソリューションを作成することもできます。

var regex = "/\..{3,4}$/";
$('a').each(function() {
    $(this).addClass(regex.match($(this).attr("href"))[0]
});
于 2013-04-08T12:45:24.003 に答える