2014-11-01 59 views
1

我有幾個圖像的列表中的多個元素的位置,有的帶人像類,並與景觀類人:查找列表(jQuery的)

<img src="/images/fullsize/007.jpg" class="portrait"> 
<img src="/images/fullsize/008.jpg" class="landscape"> 
<img src="/images/fullsize/047.jpg" class="landscape"> 
<img src="/images/fullsize/048.jpg" class="landscape"> 
<img src="/images/fullsize/049.jpg" class="landscape"> 
<img src="/images/fullsize/050.jpg" class="portrait"> 
<img src="/images/fullsize/051.jpg" class="portrait"> 
<img src="/images/fullsize/052.jpg" class="landscape"> 
<img src="/images/fullsize/053.jpg" class="landscape"> 
<img src="/images/fullsize/054.jpg" class="landscape"> 

如何識別位置(內列表)的所有.portrait圖像並將其作爲數組存儲在一個變量中? (即,對於這個例子,我需要輸出'1,6,7'或'0,5,6')。我看着使用.index(),但這似乎只返回一個結果。

+0

這應該像遍歷所有元素一樣簡單,並將每個「正確」的索引添加到數組中。 – Seventoes 2014-11-01 05:16:59

回答

1

就以這個例子的外觀:

$(function() { 

    var p_ind =[], l_ind=[]; 

    $('img').each(function(i, data) { 
    if($(data).hasClass('portrait')) p_ind.push(i); 
    else l_ind.push(i); 
    }); 

    // Portrait 
    console.log(p_ind); 

    // Landscape 
    console.log(l_ind); 
}); 

DEMO

+0

謝謝,這個作品很棒!我還沒有遇到循環的概念(我對JavaScript很新穎),所以這非常有用。 – Rich 2014-11-01 05:47:03

0

這裏是一個jsFiddle與示出了一個可能的例子一些示例代碼:

$(function() { 
    var portrait = []; 
    var landscape = []; 
    $("img").each(function (i, item) { 
     if ($(item).hasClass("portrait")) { 
      portrait.push(i); 
     } 
     if ($(item).hasClass("landscape")) { 
      landscape.push(i); 
     } 
    }); 
    console.log("Portrait: " + portrait); 
    console.log("Landscape: " + landscape); 
}); 

它使用了jQuery選擇器選擇圖像,然後選擇每個圖像,詢問它是否包含人像或風景SS。根據這些答案,它們被推入陣列中供以後檢查。