0

我正在尝试用同位素过滤项目。这些项目位于不同的 div 中,但由于某种原因,过滤器仅适用于第一个 div。这是我的代码:

<div id="articles">
   <div class="article-wrap">
      <div class="article cat-1"></div>
      <div class="article cat-2"></div>
      <div class="article cat-3"></div>
      ...
   </div>
   <div class="article-wrap">
      <div class="article cat-1"></div>
      <div class="article cat-2"></div>
      <div class="article cat-3"></div>
      ...
   </div>
</div>

我的JavaScript:

$(document).ready(function() {

   $('#articles .article-wrap').isotope( 'reloadItems' ).isotope({sortBy: 'class'});

   $('#filters li a').click(function(){

            var selector = $(this).attr('data-filter');

            $('#articles .article-wrap').isotope({ filter: selector });

            return false;

   });

});

我究竟做错了什么?

提前致谢

毛罗

4

1 回答 1

1

使用完整的代码会更容易回答这个问题。

您当前的代码缺少过滤器链接$('#filters li a'),问题可能只是您忘记在.选择器的前面添加一个。

此外,如果这是您所有的 javascript,那么您调用 isotope 的顺序错误,即您试图在初始化 isotope 之前重新加载项目。

更正后的 JS 如下所示:

// Only the line below has been altered, the rest is shown for completeness' sake
$('#articles .article-wrap').isotope({sortBy: 'class'}).isotope( 'reloadItems' );

$('#filters li a').click(function(){
    var selector = '.' + $(this).attr('data-filter');

    $('#articles .article-wrap').isotope({ filter: selector });

    return false;
});

我已经建立了一个有效的 jsFiddle来向你展示结果。

于 2013-01-03T14:15:25.820 回答