2011-12-29 65 views
1

我有一個asp.net mvc項目和一個基於url參數流出圖像的函數。例如:/ Image/40/100/50使用ImageID 40,100px寬和50px高的圖像流傳輸圖像。根據樣式寬度+高度更改圖像src

那麼,有沒有辦法改變:

<img class="image" src="/Content/View?fileID=31" style="width: 500px; height: 100px; " /> 

要:

<img class="image" src="/Image/31/500/100" style="width: 500px; height: 100px; " /> 

在一些奇特的方式? /拉塞

+0

可以肯定的是,瀏覽器會在任何情況下加載原始圖像!所以如果你想縮放圖像以節省帶寬,這是不正確的。 – Armin 2011-12-29 15:11:20

回答

3

我不知道我理解爲什麼你要做到這一點,但沿東西線以下應該做的伎倆:

$("img[src^='/Content/View?fileID=']").each(function() { 
    var img = $(this); 
    var id = img.attr("src").substring(21); 
    img.attr("src", "/Image/" + id + "/" + img.width().toString() + "/" + img.height().toString()); 
}); 

鏈接例如:http://jsfiddle.net/Cfdfp/2/

另外,如果你只應用image類的img需要這種轉變的元素,可以簡化上述的選擇:

$(".image").each(function() { 
    var img = $(this); 
    var id = img.attr("src").substring(21); 
    img.attr("src", "/Image/" + id + "/" + img.width().toString() + "/" + img.height().toString()); 
}); 

鏈接例如:http://jsfiddle.net/Cfdfp/1/

1

如何:

$('img').each(function() { 
    var $this = $(this), 
     id = $this.attr('src').substr($this.attr('src').indexOf('=')+1), 
     wid = $this.width(), 
     hgt = $this.height(); 
    $this.attr('src','/Image/'+id+'/'+wid+'/'+hgt); 
}); 
+0

爲什麼使用'$ this.attr('width')'而不是'$ this.width()'?他希望尊重CSS寬度值,而不是屬性_width_。 – Armin 2011-12-29 15:12:30

+0

好點;固定。 – Blazemonger 2011-12-29 15:52:50