如何在js中单击时过滤元素?

时间:2014-05-26 08:25:54

标签: javascript jquery css

这是我到目前为止的代码:

$(".prod-page").each(function() {
    $(this).click(function() {
         $(".cat-item").filter(function(index) {
         // something goes here I guess?
         });
    });
});

HTML:

<div class="row">
    <div class="cat-item"></div>
    <div class="cat-item"></div>
<div class="cat-item"></div>
    (more here)
</div>

根据项目数量(每页12个)动态添加页面按钮:

numItems = $('.cat-item').length;
numPages = numItems / 12;
lastPage = numItems % 12;

for (i = 0; i <= numPages; i++) {
$('#page-counter').append('<div class="prod-page"></div>' );
}

if (lastPage >= 1) {
$('#page-counter').append('<div class="prod-page"></div>' );
}

$(".prod-page").each(function(i) {
$(this).text(++i);
});

.cat-item在css中设置了display:none,并且有多个带有.prod-page类的按钮。

当点击.prod-page按钮时,我想。显示前12个元素,然后显示类.cat-item(未定义次数)的下12个元素。

知道如何处理这个问题吗?最好的是修改我已编写的代码。

2 个答案:

答案 0 :(得分:1)

试试这个 -

当您生成页面按钮时添加某种页面ID

for (i = 0; i <= numPages; i++) {
    $('#page-counter').append('<div class="prod-page" data-pageid="'+i+'"></div>' );
}

然后点击处理程序将知道要显示的页面:

$(".prod-page").click(function() {
    var $button = $(this);
    var page_id = $button.data('pageid');
    var $items = $(".cat-item");
    for (var i=0; i< $items.length; i++) {
       if (i < page_id * 12 ||  i >= (page_id+1)*12 ) {
          $($items[i]).hide();
       }
       else {
          $($items[i]).show();
       }
    }
});

答案 1 :(得分:0)

这可能是您想要的方式..

http://jsfiddle.net/rahulrulez/f6cPa/

$('li').filter(function( index ) {
    return index > 10;
  }).addClass('.cat-item');