在列表中查找多个元素的位置(jQuery)

时间:2014-11-01 05:14:15

标签: 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图像的位置(在列表中)并将其作为数组存储在变量中? (即,对于这个例子,我需要输出&#39; 1,6,7&#39;或者&#39; 0,5,6&#39;。)。我查看了使用.index(),但这只会返回一个结果。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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选择器选择图像,然后为每个图像询问它是否包含纵向或横向类。根据这些问题的答案,将它们推入阵列以供以后检查。