【发布时间】:2012-01-15 07:19:31
【问题描述】:
这是我的问题。我的网站上有这些过滤按钮,每个按钮都有一个名称,例如“UI、DEVELOPMENT、DATABASE 等”。
<ul class="tags_list">
<li><a href="#" id="tag_ui">Ui</a></li>
<li><a href="#" id="tag_database">Database</a></li>
...etc
</ul>
然后页面中有一堆元素的 REL 等于其中一个 ID。
<ul class="story_list">
<li rel="tag_ui"> *SOME CONTENT* </li>
<li rel="tag_database"> *SOME CONTENT* </li>
...etc
</ul>
我目前也有一些 jquery,因此当您单击“tags_list”过滤器按钮之一时,它会切换任何“story_list”元素以隐藏或显示,具体取决于“tags_list”按钮是否被选中或不是。
$(".tags_list li a").on('click',function() {
var relid = this.id;
$(".story_list li[rel!='" + relid + "']").toggle('fast');
return false;
});
现在,当您只需单击“TAG_UI”按钮,然后再次单击以停用它时,此代码就可以正常工作。但是当你激活了 TAG_UI 后,你也点击了 TAG_DATABASE,会发生“story_li”元素但是这两个会出现,而这两个会隐藏。
我真正需要的是:
- 当您最初单击过滤器按钮时,只有那些关联的 元素会显示,其他一切都会隐藏。
- 当您单击另一个过滤器按钮时,未停用 第一个,只有这两个相关的元素显示,但一切 else 仍然隐藏。
所以它基本上是一个过滤器。在初始页面加载时,所有内容都会显示,但是当您开始单击过滤器按钮时,只会显示与这些按钮关联的元素。
我知道这是冗长的,所以希望一切都有意义。如果您需要任何澄清,请告诉我。
提前致谢!
【问题讨论】:
-
这里缺少一些东西。
show代码在哪里?您的代码只执行.hide(),但您说再次单击同一元素以切换相关的story_listelems 是有效的。 -
But when you have TAG_UI activated, then you also click TAG_DATABASE, what happens is that "story_li" element BUT those two will show up, and those two will hide.你能修正/澄清这句话的最后一部分吗? -
啊,废话。实际上应该是切换。我搞砸了。对不起!我会编辑。
-
<li>元素没有rel属性,对于确实存在的那些元素,它不需要另一个属性的 id。如果您想为 JS 编写自己的属性,请使用 HTML 5 的data-*属性,不要滥用具有明确含义的内容。