2

問題: 次のような jQuery var セットアップがあります。

var count = $("#gallery li:visible").length;
alert(count);

これにより、ページに現在表示されているすべてのギャラリーが検索されます。ユーザーがカテゴリを選択できるため、ページネーションがトリガーされると番号が変わります。

countこれを使用して、everycountaddClassofの 3 番目の項目を確認できるようにしたいend_item(3 つ連続しているため)

私のHTML:

<ul id="gallery">
    <li class="gallery_image" data-id="" data-type="">
        <img src=""/><div class="thumb_bg"></div>
        <img src="" data-original="" />
    </li>
    <li class="gallery_image" data-id="" data-type="">
        <img src=""/><div class="thumb_bg"></div>
        <img src="" data-original="" />
    </li>
    <li class="gallery_image" data-id="" data-type="">
        <img src=""/><div class="thumb_bg"></div>
        <img src="" data-original="" />
    </li>
    <li class="gallery_image" data-id="" data-type="">
        <img src=""/><div class="thumb_bg"></div>
        <img src="" data-original="" />
    </li>
</ul>

現在試行中:

$('#gallery li').each( function(count) {
    if( count % 3 != 2 )
    return
    $(this).addClass('end')
})

ページに正確に 3 つあるわけではありません。2 から 12 のいずれかになる可能性があるため、現在表示されている 3 番目のアイテムをすべて見つける必要があります。

編集: 私のコードは動作しているようです...ただし、ページが最初に読み込まれたときのみです。ギャラリーでフィルター アイテムを使用すると、フィルターがクリックされると jQuery を再呼び出ししているにもかかわらず、コードは非表示のアイテムをカウントしています。

4

3 に答える 3

2

私はそれを逃しましたが、役に立つかもしれません(将来)

$('#gallery li:visible').filter(function(i){ return i % 3 == 2; }).addClass('end');

デモ。

于 2013-07-17T21:55:06.917 に答える
2

これを試してみてください:

フィドル

$('#gallery li:visible').each(function(i) { 
    if (i % 3 == 2) $(this).addClass('end_item');
});

さらにロードするときは、必ずこれを実行してください。

$('.end_item').removeClass('end_item');
//then execute code from above
于 2013-07-17T21:23:21.407 に答える
0
$('#gallery li:visible').each( function(count) {
      if( (count + 1) % 3 == 0 ) {
        $(this).addClass('end');
      }
});

http://jsfiddle.net/mGZmy/1/

于 2013-07-17T21:26:09.833 に答える