Javascript 如果选中此复选框,请单击从div中删除类
早上发布了关于同一项目的问题。经过一段时间的斗争,我想出了一个有点不同的方法。 正在尝试构建筛选器。其思想是过滤器复选框具有与过滤项类匹配的id。所以,一旦单击了一个过滤项,过滤就应用于项类。类(inditem除外)和ID是动态的 它的简化htmlJavascript 如果选中此复选框,请单击从div中删除类,javascript,jquery,Javascript,Jquery,早上发布了关于同一项目的问题。经过一段时间的斗争,我想出了一个有点不同的方法。 正在尝试构建筛选器。其思想是过滤器复选框具有与过滤项类匹配的id。所以,一旦单击了一个过滤项,过滤就应用于项类。类(inditem除外)和ID是动态的 它的简化html <div class="itemswrap"> <div class="inditem dynamic1"></div> <div class="inditem dynamic2"></d
<div class="itemswrap">
<div class="inditem dynamic1"></div>
<div class="inditem dynamic2"></div>
<div class="inditem dynamic3"></div>
<div class="inditem dynamic2"></div>
</div>
<ul class="subnav">
<li class="lifilter">
<input type="checkbox" class="filtercheck" id="dynamic1" />
<label for="dynamic1">whatever label</label>
</li>
<li class="lifilter">
<input type="checkbox" class="filtercheck" id="dynamic2" />
<label for="dynamic1">whatever label</label>
</li>
<li class="lifilter">
<input type="checkbox" class="filtercheck" id="dynamic3" />
<label for="dynamic1">whatever label</label>
</li>
</ul>
这一个标记为重要的,当额外的项目被添加到过滤中时,不要隐藏
.checkeditem {display:block !important}
初始过滤效果良好。但是,当我单击选中项时,关联的div不会隐藏。您是指类似的内容吗
$(this).prop()
var$filters=$('.filtercheck').change(函数(){
var$items=$('.inditem').hide();
var filters=$filters.filter(':checked').map(函数(){
返回“.”+this.id;
}).get();
if(过滤器长度){
$items.filter(filters.join()).show();
}否则{
$items.show();
}
});代码>
.checkeditem{
显示:阻止!重要
}
动态1
动态2
动态3
动态2
代码的问题是,事件处理程序在第一个成功案例上附加了第二个单击事件。这意味着复选框上的“click”被赋予了“addclass”的情况,所有后续的单击都由该处理程序而不是预期的处理程序处理
使用相同的HTML。我创造了这个:
$(document).ready(function() {
$(".filtercheck").click(function(){
$('.inditem').hide();
var filter1 = $(this).attr('id');
$('.' + filter1).toggleClass('checkeditem');
});
});
我认为这是我想要的行为?我没有单独附加单击处理程序,而是将单个处理程序附加到所有单击处理程序。这样做相当容易
$(this).prop()
确定当前单击的项目是否处于活动状态。对于这个简单的例子,我选择使用一个类切换来说明这一点 你能分享一个示例html和完整的脚本吗?filtercheck
是否是一个复选框?向我们展示html以获得准确的答案。添加了it@wharry为了澄清,如果选中或未选中当前筛选器检查,您是否希望添加/删除类?是的。这正是我所需要的。非常感谢。