2014-11-01 56 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。根据这些答案,它们被推入阵列中供以后检查。