【发布时间】:2014-12-24 07:46:41
【问题描述】:
所以我有可以有多个过滤类的项目。像这样的:
<div class="items>
<div class="item category-1 category-2">An item that displays initially.</div>
<div class="item category-1 category-2 initially-hidden">An item that is initially hidden.</div>
<div class="item category-1 category-2">An item that displays initially.</div>
<div class="item category-1 category-2 initially-hidden">An item that is initially hidden.</div>
<div class="item category-1 category-2">An item that displays initially.</div>
</div>
使用同位素,如何在页面加载时隐藏具有特定类别的项目?假设我想在加载时隐藏任何具有initially-hidden 类的项目,但是当我单击该项目具有的任何其他类的过滤器时仍然能够显示该项目?对于上面的示例代码,假设我单击了一个category-2 过滤器,那么所有具有category-2 的项目(即使它们具有initially-hidden)都会出现?
基本上在我正在处理的项目中,客户希望能够在页面加载时隐藏项目,然后在过滤时显示它们。因此,我为她创建了一种使用initially-hidden 标记这些内容的方法,但我不知道如何最初隐藏这些内容,但在点击相关过滤器时仍允许它们显示出来。
我遇到了 desandro 的 this fiddle,但这并不是我想要的,因为它假定每个项目只有 1 个类别(红色、绿色或蓝色)。
编辑
这是我编辑的 desandro 小提琴的一个分支,它更像我的情况(项目可以有多个类)。 Fiddle.
最终编辑
答案似乎是相反,添加一个initially-shown 类并在页面加载时过滤它们。因此,我没有让我的客户将所有内容都标记为initially-shown,而是采用了这种方法:
$container.find('.tile:not(.initially-hidden)').addClass('initially-shown');
因为他们有 100 多件物品,而且似乎只隐藏了一小部分。
这是更新后的fiddle。
【问题讨论】:
-
有什么理由不能只使用
style="display:none;",或者将.initially-hidden的css 设置为display:none? -
向我们展示您已经拥有的代码 - 这可能是 CSS 的解决方案。
-
@DLeh,没那么容易,这是我尝试的第一件事。
-
@neiesc,哈哈,看看我对原帖的编辑。
标签: jquery jquery-isotope jquery-masonry