2012-03-09 11 views
0

ファイル名がfilename_mov.jpgのサイトに複数の画像があります。 filename部分は、動的に生成される部分です(例:123456abc_mov.jpg)。jQueryで画像のファイル名の一部を指定する方法

_mov.jpgが唯一のものであるため、ファイル名の一部を検索することでターゲットを設定します。

jQueryを使用すると、これを検索できますか?

私が試してみた:

$("img[src*='_mov.jpg']").addClass('movieThumb'); 
をしかし、それは動作しません。複雑なセレクタをいじる避けるため

+0

を使用して - なぜそれはしていませんあなたのために働く? –

+0

正規表現を持つセレクタが必要です(http://stackoverflow.com/questions/190253/jquery-selector-regular-expressions)。ただし、すべての画像を繰り返し処理し、src属性の値を確認するほうが良いでしょう – scibuff

+3

それは "うまくいかない"のですか?セレクタが正しく表示され、次のURLの画像が選択されます:http://jsfiddle.net/j6cc2/ –

答えて

2

使用the “attribute ends with” selector

$('img[src$="_mov.jpg"]').addClass('movieThumb'); 

それともjQuery#filter()を使用して自分自身をフィルタリングんでした:

$('img').filter(function() { 
    return /_mov\.jpg$/.test(this.src); 
}).addClass('movieThumb'); 
+0

私はこのフィルターを使い終わりました。ご返信ありがとうございます。 – JayDee

0

、私は<img class="mov_image" src="...._mov.jpg">のように、特定のCSSクラスを追加することをお勧めしたい:

$('.mov_image').addClass('movieThumb'); 
+1

クラスを追加してクラスを追加する必要がある要素を識別するクラスは、無限の作業です。 – Christian

+0

これは[CSSクラスを使用してセマンティクスを提供する](http://code.google.com/apis/checkout/developer/Google_Checkout_Shopping_Cart_Annotating_Products.html)([こちらも別です] [http:// microformats .org/2005/10/19/more-than-styling))。 –

1
$('img').each(function(){ 

    var src = $(this).attr('src'); 
    if(src.indexOf('_mov') != -1) 
     //do stuff 
}); 

していないがIEの文字列にどれだけIndexOfの作品を確認してください。

+1

'$(" img [src * = '_ mov.jpg'] ")'はうまくいくはずです...もしうまくいかなければ、あなたはできません。しかし、はい、 'indexOf'はIEの文字列に対しても機能します。 *編集:*あなたのコードは実際には正しくありません。 'indexOf'が' -1 'を返すと 'true'を返します。つまり、部分文字列が見つからなかった場合です。それはおそらくすべての画像に当てはまるでしょう。あなたは '-1'と比較する必要があります:' if(this.src.indexOf(...)> -1) '。 –

1

正常に動作する必要があります持っているもの$.filter

$('img') 
    .filter(function() { 
     return this.src.match(/_mov\.jpg$/); 
    }) 
.addClass('movieThumb'); 
; 
+2

'.'をエスケープする必要はありませんか? '/ _mov \ .jpg $ /' –

+0

...もちろんです。どうも – scibuff

関連する問題