2011-11-23 42 views
1

我正在構建一個響應站點,並且在一個特定頁面上,我試圖讓移動設備(寬度爲480或更小)不下載特定圖像。我知道我很親密,我會告訴你爲什麼在代碼之後。使用jQuery循環訪問img src屬性

HTML:

<div class="index-section"> 
    <p><img class="scale-with-grid" alt="" /></p> 
    <p><a href="#">A Letter from Person 1&nbsp;<span class="triangle">&#9654;</span></a></p> 
</div> 

<div class="index-section"> 
    <p><img class="scale-with-grid" alt="" /></p> 
    <p><a href="">A Letter from Person 2&nbsp;<span class="triangle">&#9654;</span></a></p> 
</div> 

<div class="index-section"> 
    <p><img class="scale-with-grid" alt="" /></p> 
    <p><a href="">A Letter from Person 3&nbsp;<span class="triangle">&#9654;</span></a></p> 
</div> 

<div class="index-section"> 
    <p><img class="scale-with-grid" alt="" /></p> 
    <p><a href="">A Letter from Person 4&nbsp;<span class="triangle">&#9654;</span></a></p> 
</div> 

它基本上是4分幾乎相同的div的。而這裏的jQuery的:

$(document).ready(function() { 

var imgPath = '_/img/' 

var $winWidth = $(window).width(); 

var $indexSection = $('.index-section p img'); 

if ($winWidth <= 480) { 
    $indexSection.attr('src',''); 
    $indexSection.css('display','none'); 
    } else { 
     var imgSrc = [ "keith-index.jpg", "derek-video.jpg", "bar-chart.jpg", "honor-roll.jpg" ]; 

     jQuery.each(imgSrc, function(value){ 
      $indexSection.attr('src',imgPath + value); 
     }); 
    } 
}); 

我把這個頭(jQuery庫後),以便它增加了SRC作爲它的渲染HTML。這適用於iPhone(或寬度小於480px的Firefox),並且不會加載圖像,所以這很好。

問題是,當我試圖循環顯示圖像時,它大概工作,因爲Firefox的控制檯告訴我它無法加載「http://myurl.com/_/img/」 0.jpg「,它告訴我它幾乎正確連接,但是,出於某種原因,它打印的是數組的索引,而不是數值(我認爲)。

我需要的是,如果瀏覽器比480寬,打印url爲每個圖像的src屬性(「myurl.com/_/img/keith-index.jpg」,其他三個他們各自的div),以便圖像加載,例如桌面瀏覽器。

感謝您的任何幫助。

回答

1

使用jQuery.each,第一個回調參數是集合中的索引,第二個參數是該值。

jQuery.each(imgSrc, function(index, value){ 
    $indexSection.attr('src',imgPath + value); 
}); 

編輯:哎呦...我錯過了你想要做一個更根本的問題。

$indexSection是一個jQuery對象,包含全部您正在使用的圖像。當您撥打$indexSection.attr時,您將一次設置所有四個圖像的屬性。您對imgSrc的每個值執行此操作,因此所有四個圖像的src屬性最終都會設置爲最後的imgSrc值。

取而代之,您希望遍歷img標籤,併爲每個圖像從imgSrc訪問正確的值。

$indexSection.each(function(index) { 
    $(this).attr('src', imgPath + imgSrc[index]); 
}); 
+0

感謝您的回覆。奇怪的行爲。在Firefox中,我第一次在那裏添加「index」,它爲每個圖像添加了數組中的最後一個值,甚至沒有加載其他值(根據Firebug)。我刷新並加載其他圖像,但繼續顯示陣列中所有圖像的最後一幅圖像。檢查出來:http://nickcox.me/dev/annual-report/index.html – nickcoxdotme

+0

我標記正確。謝謝你的幫助。 (我也很感謝你的解釋,而不僅僅是回答!)但是,你能解釋爲什麼'索引'工作嗎?我以爲我讀錯了,並把'價值',並且工作。我會希望'index'打印0,1,2,3和'value'給我的圖像。該陣列的索引不是數字位置嗎?爲什麼我不想要這些值? – nickcoxdotme