Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果选中此复选框,请单击从div中删除类_Javascript_Jquery - Fatal编程技术网

Javascript 如果选中此复选框,请单击从div中删除类

Javascript 如果选中此复选框,请单击从div中删除类,javascript,jquery,Javascript,Jquery,早上发布了关于同一项目的问题。经过一段时间的斗争,我想出了一个有点不同的方法。 正在尝试构建筛选器。其思想是过滤器复选框具有与过滤项类匹配的id。所以,一旦单击了一个过滤项,过滤就应用于项类。类(inditem除外)和ID是动态的 它的简化html <div class="itemswrap"> <div class="inditem dynamic1"></div> <div class="inditem dynamic2"></d

早上发布了关于同一项目的问题。经过一段时间的斗争,我想出了一个有点不同的方法。 正在尝试构建筛选器。其思想是过滤器复选框具有与过滤项类匹配的id。所以,一旦单击了一个过滤项,过滤就应用于项类。类(inditem除外)和ID是动态的

它的简化html

<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为了澄清,如果选中或未选中当前筛选器检查,您是否希望添加/删除类?是的。这正是我所需要的。非常感谢。