私の目標は、次のようにhtmlコードに挿入されたjqueryを使用してすべての画像のURLを収集することです。
style="background: url(...)"
また
style="background-image: url(...)"
最初の例では、さまざまなケースがあります(繰り返し、位置の追加、タグの順序の変更など)。
正規表現が最善の方法だと思いますが、私はあまり得意ではありません。
ありがとう!
私の目標は、次のようにhtmlコードに挿入されたjqueryを使用してすべての画像のURLを収集することです。
style="background: url(...)"
また
style="background-image: url(...)"
最初の例では、さまざまなケースがあります(繰り返し、位置の追加、タグの順序の変更など)。
正規表現が最善の方法だと思いますが、私はあまり得意ではありません。
ありがとう!
できるよ:
$('[style*="background"]').each(function(){
// do something with each
});
style
これにより、インラインで設定されているすべての要素がループbackground
されます。
これは、どこかにキーワードがあることを*=
意味していることに注意してください。style
background
うん。私は正規表現を使います。
次に例を示します。
var img_urls=[];
$('[style*="background"]').each(function() {
var style = $(this).attr('style');
var pattern = /background.*?url\('(.*?)'\)/g
var match = pattern.exec(style);
if (match) {
img_urls.push(match[1]);
//just for testing, not needed:
$('#result').append('<li>'+match[1]+'</li>');
}
});
背景の一部ではないスタイルの URL を持つことが可能である場合、背景は画像なしである可能性がありますが、正規表現はより複雑になるはずであり、コードの保守性のために、正規表現を作成するのではなく、別の「if」を追加するだけです否定的な先読み(多くの人が読むのが難しい)。
したがって、コードは次のようになります。
var img_urls=[];
$('[style*="background"]').each(function() {
var style = $(this).attr('style');
var pattern = /background(.*?)url\('(.*?)'\)/ig
var match = pattern.exec(style);
if (match && match.length > 0) {
if (match[1].indexOf(';')>0) return;
img_urls.push(match[2]);
//just for testing, not needed:
$('#result').append('<li>'+match[2]+'</li>');
}
});
このフィドルで遊ぶことができます: http://jsfiddle.net/Exceeder/nKPbn/