1

いくつかの画像を他の画像に置き換える Web アプリがあります。

例: パスがhttp://example.com/example/example/images/dir/1.gifのイメージは、 http://cdn.example.com/dir/1.gifに置き換えられます。

これを行うには、jQuery attr() を使用します。

したがって、私のコードは次のようになります。

$('img[src="http://www.example.com/dir/images/dir/1.gif"]').attr('src', "http://cdn.example.com/dir/1.gif");
$('img[src="http://www.example.com/dir/images/dir/2.gif"]').attr('src', "http://cdn.example.com/dir/2.gif");
$('img[src="http://www.example.com/dir/images/dir/3.gif"]').attr('src', "http://cdn.example.com/dir/3.gif");
$('img[src="http://www.example.com/dir/images/dir/4.gif"]').attr('src', "http://cdn.example.com/dir/4.gif");
$('img[src="http://www.example.com/dir/images/dir/5.gif"]').attr('src', "http://cdn.example.com/dir/5.gif");
$('img[src="http://www.example.com/dir/images/dir/6.gif"]').attr('src', "http://cdn.example.com/dir/6.gif");
$('img[src="http://www.example.com/dir/images/dir/7.gif"]').attr('src', "http://cdn.example.com/dir/7.gif");
$('img[src="http://www.example.com/dir/images/dir/8.gif"]').attr('src', "http://cdn.example.com/dir/8.gif");
$('img[src="http://www.example.com/dir/images/dir/9.gif"]').attr('src', "http://cdn.example.com/dir/9.gif");
$('img[src="http://www.example.com/dir/images/dir/10.gif"]').attr('src', "http://cdn.example.com/dir/10.gif")

それで、これを圧縮する方法はありますか?字数が少ないから?

注: 各行で、両方の Web サイトの画像は同じです。たとえば、1.gif は 1.gif に再度置き換えられますが、サーバーは異なります。だから基本的にはサーバーを交換したいhttp://www.example.com/dir/images/dir/の場合はhttp://cdn.example.com/dir/に置き換えます。

どうもありがとう

4

2 に答える 2

1

ループを使用するのと同じくらい簡単です。

var i;
for ( i = 1; i <= 10; i++ )
{
  $('img[src="http://www.example.com/dir/images/dir/'+i+'.gif"]').attr('src','http://cdn.example.com/dir/'+i+'.gif');
}

それとも、すべての検索と置換を求めていましたか?

セレクターで始まる attrを使用できます。

$('img[src^="http://www.example.com/"]').each(function(index,element){
  var $this, src, newSrc;
  $this = $(this);
  src = $this.attr('src');
  //do your replacement here
  newSrc = src.replace('www.example.com/dir/images/dir', 'cdn.example.com/dir');
  $this.attr('src', newSrc);
});

Moin Zaman が指摘したように、attr は関数をパラメーターとしても取ることができ、このスクリプトを次のように短縮します。

$('img[src^="http://www.example.com/"]').attr('src', function(index, src){
  return src.replace('www.example.com/dir/images/dir', 'cdn.example.com/dir');
});
于 2011-10-24T03:11:50.823 に答える
1

ものを置き換えるには、JavaScript の .replace() メソッドと正規表現が必要です。

jQuery では、属性セレクター^=は、で始まる属性値を探すことを意味します。

これを試してみてください。「www.example.com」で始まるすべての画像を想定しています。

$('img[src^="http://www.example.com/dir/images/dir"]').attr('src',
    function(i,src){ 
        return src.replace('example.com/dir/images/dir','cdn.example.com/dir') 
});
于 2011-10-24T03:10:35.963 に答える