简体   繁体   English

过滤同位素中父元素的子元素

[英]Filter child of parent elements in isotope

I using isotope to filter data. 我使用同位素来过滤数据。

Currently, I have an HTML with the struct like: 目前,我有一个HTML,其结构如下:

 jQuery('.container-filter-cate').isotope({ itemSelector: '.list-posts', filter: ':nth-child(-n+3)' }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="http://isotope.metafizzy.co/v1/jquery.isotope.min.js"></script> <ul> <li><a href="" data-filter="*">All Item</a></li> <li><a href="" data-filter=".sport">Sport</a></li> <li><a href="" data-filter=".cinema">Cinema</a></li> <li><a href="" data-filter=".music">Music</a></li> </ul> <div class="container-filter-cate"> <ul class="list-posts sport"> <li>Text 1</li> <li>Text 2</li> <li>Text 3</li> <li>Text 4</li> </ul> <ul class="list-posts cinema"> <li>Text 5</li> <li>Text 6</li> </ul> <ul class="list-posts music"> <li>Text 7</li> <li>Text 8</li> <li>Text 9</li> <li>Text 10</li> </ul> </div> 

I want it should be filtered with <li> tag instead of ul like current. 我希望它应该使用<li>标记而不是像当前一样的ul进行过滤。

I tried to with: 我尝试着:

filter: 'ul.list-posts li:nth-child(-n+2)'

but it's not working. 但它不起作用。

Edited: my fiddle at here 编辑: 我在这里的小提琴

My purpose is using filter to limit item to show. 我的目的是使用filter限制要显示的项目。

You can change values of filter: ':nth-child(-n+3)' to see more information. 您可以更改filter: ':nth-child(-n+3)'filter: ':nth-child(-n+3)'以查看更多信息。

When I change to values of filter: ':nth-child(-n+2)' the result will be shown: first and second ul . 当我更改为filter: ':nth-child(-n+2)'的值时,结果将显示:first和second ul

If first ul contain 5 items, second ul contain 40 items, it also shows 45 items. 如果第一个ul包含5个项目,第二个ul包含40个项目,则还显示45个项目。

Will fail because I only want 2 item to appear, not all items of two ul . 会失败,因为我只希望出现2个项目,而不是两个ul所有项目。

Check this, 检查一下

HTML CODE, HTML代码

<ul id='oiso'>
  <li><a href="javascript:;" data-filter="*">All Item</a></li>
  <li><a href="javascript:;" data-filter=".sport">sport</a></li>
  <li><a href="javascript:;" data-filter=".cinema">cinema</a></li>
  <li><a href="javascript:;" data-filter=".music">music</a></li>
</ul>

<div class="container-filter-cate">
  <ul class="list-posts sport">
    <li>Text 1</li>
    <li>Text 2</li>
    <li>Text 3</li>
    <li>Text 4</li>
  </ul>

  <ul class="list-posts cinema">
    <li>Text 5</li>
    <li>Text 6</li>
  </ul>

  <ul class="list-posts music">
    <li>Text 7</li>
    <li>Text 8</li>
    <li>Text 9</li>
    <li>Text 10</li>
  </ul>
</div>

JS CODE JS代码

$(document).ready(function() {
  var $container = $('.list-posts');
  $container.isotope({});
  $('#oiso li a').on('click', function() {
    var selector = $(this).attr('data-filter');
    $container.isotope({
      filter: $(selector).find("li")
    });
    return false;
  });
})

For more details once visit jsfiddle link 有关更多详细信息,请访问jsfiddle 链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM