3

tumblr ブログをカスタマイズしています。フォトセットに含まれる写真の数に応じて、特定のスタイルとルールを適用したいと考えています。各投稿に同じクラスがある場合、各投稿に存在する子要素の数を取得する方法がわかりません。これが tumblr によって生成される種類のコードである場合:

<div class="photoset">
     <img />
     <img />
</div>

<div class="photoset">
     <img />
     <img />
     <img />
</div>

jQuery に最初と 2 番目のインスタンス (つまり 2 と 3) の要素数を返すようにするにはどうすればよいですか?

使用$('.photoset img').length();してみましたが、存在するすべての要素の合計数 (この場合は 5) が得られます。

どんな助けでも大歓迎です!

乾杯、スコット

4

5 に答える 5

7

各フォトセット アイテムを循環し、その画像を個別にカウントしてから、コードのその時点でその情報を使用して必要なことを行うことができます。

$(".photoset").each(function(index, elem) {
    var numImages = $(this).find("img").length;
    // do whatever processing you wanted to with numImages here
});

これらのカウントを配列に入れたい場合は、次のようにすることができます。

var imgCountArray = $(".photoset").map(function() {
    return($(this).find("img").length)
}).get();
于 2012-04-23T16:40:00.290 に答える
2

以下を試してください、

var imgCounts = [];

$('.photoset').each (function () {
  imgCounts.push($(this).find('img').length);
});

今、

imgCounts[0] = 2 //first divs img count
imgCounts[1] = 3 //second divs img count
于 2012-04-23T16:40:07.737 に答える
1

あなたが使用することができます:

$(".photoset").each(function(i, photoset) {
  photoset = $(photoset); 
  var numImages = photoset.children().length;
  // or var numImages = photoset.find("img").length; for only images

  if (numImages === 2) {
    // your code
  }
  if (numImages === 3) {
    // your code
  }

  // or just comparing whether greater or lower
  if (numImages > 2) {
    // your code
  }
});
于 2012-04-23T16:43:37.163 に答える
1

これにはいくつかの方法があります。

.each()まず、各を循環させるために使用できます.photoset:

$('.photoset').each( function() {
   var num = $(this).find('img').length;
   // Do something based on num
});

または、 または を使用.eq():eq()て特定のものを選択します。

var num = $('.photoset:eq(1) img').length;

var num = $('.photoset').eq(1).find('img').length;

于 2012-04-23T16:41:03.963 に答える
0
$('.photoset:first img').length

$('.photoset:last img').length
于 2012-04-23T16:40:43.680 に答える