2012-01-27 76 views
4

我想更改所有图像源,如果它们加载失败。一些公司阻止对Dropbox的访问,所以我喜欢使用图像的替代链接。另外,我不想修改图像和css文件。我的代码对第一个图像有效,但是使每个图像源都相同。我该如何解决它?在此先感谢:更改所有图像源jquery

<html> 
<head> 
<script src="jquery.js" type="text/javascript"></script> 

</head> 
<body> 

<img src="img/a.png" alt="img1"/> 
<img src="img/b.png" alt="img2"/> 

</body> 

<script> 

var image = new Image(); 
image.src = "http://dropbox.com/favicon.ico"; 
if (image.height < 0) { 

var imgsrc = $('img').attr('src'); 

var imgsrc1 = imgsrc.substr(imgsrc.lastIndexOf("img/")); 
imgsrc1 = imgsrc.substr(4); 
var imgalt = imgsrc1.substr(4,imgsrc.length - 4); 

var imgsrc2 ='t/' + imgsrc1; 
$('img').attr('src',imgsrc2); 
$('img').attr('alt',imgalt);  

    } else { 


var imgsrc = $('img').attr('src'); 

var imgsrc1 = imgsrc.substr(imgsrc.lastIndexOf("img/")); 
imgsrc1 = imgsrc.substr(4); 
var imgalt = imgsrc1.substr(4,imgsrc.length - 4); 

var imgsrc2 ='http://dl.dropbox.com/u/xxxxxx/img/' + imgsrc1; 
$('img').attr('src',imgsrc2); 
$('img').attr('alt',imgalt);  

    } 
</script> 
</html> 

回答

7

你要做的所有图像相同的过程,我觉得你的代码只适用于第一个。具体行var imgsrc = $('img').attr('src');

尝试这样的else子句里:

$('img').each(function() { 
    var $img = $(this); 
    var imgsrc = $img.attr('src'); 

    var imgsrc1 = imgsrc.substr(imgsrc.lastIndexOf("img/")); 
    imgsrc1  = imgsrc.substr(4); 
    var imgalt = imgsrc1.substr(4,imgsrc.length - 4); 

    var imgsrc2 ='http://dl.dropbox.com/u/xxxxxx/img/' + imgsrc1; 
    $img.attr('src',imgsrc2); 
    $img.attr('alt',imgalt); 
} 

它也可以是值得注意的是Dropbox的具有传输限制的,至少,每天带宽(不知道是否有一个最大命中每天数虽然):https://www.dropbox.com/help/45

+0

克里斯托弗,我想每个之前,但随后整个代码停止工作。尽管感谢您的帮助。 – john206 2012-01-28 02:57:16

0

试试这个:

$(document).ready(function(){ 
    $('img').each(function(){ 

     var imgsrc = $(this).attr('src'); 

     $(this).load(function(){ 
      if($(this).prop('complete')){ 

       var imgsrc1 = imgsrc.substr(imgsrc.lastIndexOf("img/")); 
       imgsrc1 = imgsrc.substr(4); 
       var imgalt = imgsrc1.substr(4,imgsrc.length - 4); 

       var imgsrc2 ='t/' + imgsrc1; 
       $('img').attr('src',imgsrc2); 
       $('img').attr('alt',imgalt); 

      }else{ 

       var imgsrc1 = imgsrc.substr(imgsrc.lastIndexOf("img/")); 
       imgsrc1 = imgsrc.substr(4); 
       var imgalt = imgsrc1.substr(4,imgsrc.length - 4); 

       var imgsrc2 ='http://dl.dropbox.com/u/xxxxxx/img/' + imgsrc1; 
       $('img').attr('src',imgsrc2); 
       $('img').attr('alt',imgalt); 

      } 
     }); 
    } 
}); 
+0

萨加尔,我用你的代码,它出现所有的图像成为第二个图像和页面不停止加载。感谢您的尝试。 – john206 2012-01-28 02:59:05