我正在尝试使用各种复选框显示/隐藏多个div . 我的目标是当用户选择类别/类别时CMS提供的div类 .
这适用于一个类但是只要多个类被赋予一个div它们就会发生冲突并且它会混淆整个事物 .
HTML for the checkboxes
<ul class="checkboxes">
<li class="dropper"><a href="#"><label>Project Management<input id="box1" type="checkbox" checked="checked" name="checkbox-01" /><span id="box1"></span></label></a></li>
<li><a href="#"><label>Copywriting<input id="box2" type="checkbox" checked="checked" name="checkbox-02" /><span id="box2"></span></label></a></li>
<li><a href="#"><label>Design<input id="box3" type="checkbox" checked="checked" name="checkbox-03" /><span id="box3"></span></label></a></li>
<li><a href="#"><label>Editing<input id="box4" type="checkbox" checked="checked" name="checkbox-04" /><span id="box4"></span></label></a></li>
<li><a href="#"><label>Multimedia<input id="box5" type="checkbox" checked="checked" name="checkbox-05" /><span id="box5"></span></label></a></li>
<li><a href="#"><label>Advertising<input id="box6" type="checkbox" checked="checked" name="checkbox-06" /><span id="box6"></span></label></a></li>
<li><a href="#"><label>Consultancy<input id="box7" type="checkbox" checked="checked" name="checkbox-07" /><span id="box7"></span></label></a></li>
<li class="dropper"><a href="#"><span id="reset-toggles" class="reset">Reset</span></a></li>
</ul>
HTML for the divs I want to show/hide
<div class="box-shadow copywriting design editing">
<div class="caption">
<h3>Scottish Hosteler Magazine</h3>
<h4>Scottish Youth Hostel Association</h4>
<p><a href="case-study-L1.php">Find out more > ></a></p>
</div>
<img src="img/tile1.jpg"/>
</div>
<div class="box-shadow copywriting design">
<div class="caption">
<h3>Scottish Dental Magazine</h3>
<h4>Scottish Dental</h4>
<p><a href="case-study-L2.php">Find out more > ></a></p>
</div>
<img src="img/tile2.jpg"/>
</div>
And jQuery
$(document).ready(function() {
$("#reset-toggles").click(function() {
$("input[type=checkbox]").attr("checked", !0);
}), $("#box1").click(function() {
$(".projman").fadeToggle("fast", "linear");
}), $("#box2").click(function() {
$(".copywriting").fadeToggle("fast", "linear");
}), $("#box3").click(function() {
$(".design").fadeToggle("fast", "linear");
}), $("#box4").click(function() {
$(".editing").fadeToggle("fast", "linear");
}), $("#box5").click(function() {
$(".multimedia").fadeToggle("fast", "linear");
}), $("#box6").click(function() {
$(".advertising").fadeToggle("fast", "linear");
});
});
所以说用户想要查看带有“设计”和“文案”类的div只会隐藏顶部的例子,因为它还包含“编辑”类
基本上我所追求的是允许组合工作的代码,即如果用户选择“设计”和“文案”,它将只显示具有这两个类的div而不是具有另一个类的那些,例如“编辑”以及
非常复杂和令人沮丧!
2 回答
filter, meet schmilter
jQuery的:
这将查看所有选中/未选中的框,分配
hide
和show
的类 . 如果容器具有hide
,则它将被隐藏,并且hide
和show
将被删除 . 如果它只有show
,则显示它并删除show
.当您设置
schmilt = false
时,它将执行相反的操作并提供典型的过滤功能 .如果它们不适用于任何现有容器,它也将删除选择 .
我重写了html以使其更有意义,就像@scrowler提到的那样,但更进一步 . 我在复选框和内容之间添加了相应的ID /类 . 因此,如果一个复选框的id为
#edit
,则相应的内容容器都具有.edit
类HTML:
做了一个小提琴:http://jsfiddle.net/filever10/4NS3A/
您要将
#box1
,#box2
等唯一ID分配给HTML中禁止的多个元素,使用要对多个元素应用引用的类 .在您的情况下,我假设您要将jQuery处理程序应用于复选框元素,请尝试以下操作: