【发布时间】:2010-11-22 19:54:58
【问题描述】:
我有一系列的一系列行和复选框来过滤它们:
<ul>
<li><input id="type-A" type="checkbox" checked="checked"> <a href="/A">A</a></li>
<li><input id="type-B" type="checkbox" checked="checked"> <a href="/B">B</a></li>
<li><input id="type-C" type="checkbox" checked="checked"> <a href="/C">C</a></li>
<li><input id="type-D" type="checkbox" checked="checked"> <a href="/D">D</a></li>
<li><input id="type-E" type="checkbox" checked="checked"> <a href="/E">E</a></li>
<li><input id="type-F" type="checkbox" checked="checked"> <a href="/F">F</a></li>
</ul>
<table>
<tr class="A">filler</tr>
<tr class="B">filler</tr>
<tr class="A B">filler</tr>
<tr class="C D">filler</tr>
<tr class="A F">filler</tr>
<tr class="A E F">filler</tr>
<tr class="F">filler</tr>
<tr class="C D E">filler</tr>
<tr class="A B C D E F">filler</tr>
</table>
我想根据检查的内容隐藏/显示行。目前我正在使用(在上一个问题的帮助下:Use "this" to simplify code (simple jQuery)):
$(function(){
$("input[id^='type-']").change(function() {
$("."+this.id.replace('type-','')).toggle(this.checked);
}).change();
});
每次单击框时都会切换显示的内容,如果每行只有一个类,则效果很好。但他们没有。现在如何设置,单击顺序会更改显示的行。所以我需要创建一个函数来检查哪些复选框被选中并显示包含其中任何一个的行。我不反对添加一个按钮来实现这一点。
如果你们能给我任何帮助(以及可以帮助我学习的资源方向),我将不胜感激!
【问题讨论】:
-
@christina为什么在定义处理程序后立即触发change事件?这是你想做的吗? -
@Alex 这是一种根据复选框的初始状态设置行可见性的快速方法。
标签: javascript jquery