jquery - 选中复选框时将类添加到所有其他 div

标签 jquery html css sorting checkbox

在底部编辑

TL;DR 我不确定如何将类属性添加到所有没有使用复选框选择的类的 div。

我正在尝试为小型指南列表创建排序脚本。所以我的想法是我的 div 标签将附加描述类,例如:

<div class="guide-block WINDOWS UPDATE INSTALL">

“windows、更新和安装”是“描述”类,仅用于排序目的。侧面带有复选框的列表将允许用户选择与他们需要查找的内容相关的复选框。示例:

<input type="checkbox" id="install"/>
<input type="checkbox" id="update"/>
<input type="checkbox" id="windows"/>

用户选择与其搜索相关的框,没有从复选框中选择的类的 div 将添加一个类,并显示:无;里面。这将使不相关的指南消失(理论上)。

我对 java 和 jquery 比较陌生,所以我不确定自己在做什么。我已经将来自该站点的其他类似问题的脚本拼凑在一起,以尝试制作我需要的代码。我已经让代码有点工作了。它将使具有匹配复选框的 div 在选中时消失。我想要相反的。我希望没有选中复选框的 div 消失。如果我有一个带有 UPDATE 和 INSTALL 的 div,我需要代码来识别它已经选择了一个并且仍然存在。因为现在,如果 div 有两个,而我选择了一个,它就会消失,因为另一个没有被选中。

$(document).ready(function(){
$('#install').change(function () {
    if (!this.checked)
        $("div.guide-block.install").css("display", "block");
    else
        $("div.guide-block.install").css("display", "none");
});
$('#update').change(function () {
    if (!this.checked)
        $("div.guide-block.update").css("display", "block");
    else
        $("div.guide-block.update").css("display", "none");
});
$('#windows').change(function () {
    if (!this.checked)
        $("div.guide-block.windows").css("display", "block");
    else
        $("div.guide-block.windows").css("display", "none");
});
});

如有任何帮助,我们将不胜感激。给我一份关于如何去做的指南,无论如何。我愿意学习这一点,但我用自己的知识碰壁,谷歌搜索不理解。虽然,我不太确定我在找什么哈。

编辑:我已经按照建议重写了代码。遗憾的是,这不起作用,但我觉得我更接近了。

$('#install').change(function () {
    if (this.checked) {
        $('div.guide-block:not(.install)').hide();
    }
});

最佳答案

您需要创建一个选择器,其中包含所有选项类别,即 windowsupdateinstall

另外,为了在元素之间建立关系,我在小案例中使用了 css 类。

<div class="guide-block windows update install">
  1. windows, update, install
</div>

$(document).ready(function() {
  //Select the checkboxes
  var checkboxes = $('.checkboxContainer :checkbox');  
  //bind the change event hanlder
  checkboxes.on('change', function() {    
    //get the checked checkboxes id, It return create an array
    var checkedCssClasses = checkboxes.filter(':checked').map(function() {
      return this.id;
    }).get();
    //For Debugging purpose, 
    console.clear();
    console.log(checkedCssClasses);    
    //Get all guideBlocks
    var guideBlock = $("div#guide-container .guide-block");    
    //Hide all block
    guideBlock.hide();
    //any checkbox is checked
    if (checkedCssClasses.length> 0) {
      //Create the selector for elements      
      checkedCssClasses = '.' + checkedCssClasses.join('.')      
      //Show filtered element
      guideBlock.filter(checkedCssClasses).show();
    }
  });
});
.guide-block {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="guide-container">
  <div class="guide-block windows update install">
    1. windows, update, install
  </div>
  <div class="guide-block windows update">
    2. windows, update
  </div>
  <div class="guide-block install">
    3. install
  </div>
</div>
<div class="checkboxContainer">
  <input type="checkbox" id="install" />Install
  <br>
  <input type="checkbox" id="update" />Update
  <br>
  <input type="checkbox" id="windows" />Windows
</div>

关于jquery - 选中复选框时将类添加到所有其他 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41421021/

相关文章:

jquery - 使用 .each() JQuery 添加到现有值

javascript - jquery 点击和 cookies

javascript - 如何为应用程序创建外部链接 (PhoneGap)

html - 如何使用css格式化下面的文本

jquery - 如何通过 jquery 在其兄弟 div 上查找子类来在 div 上添加 css

html - 测试响应式屏幕 |推特 Bootstrap

jquery - 更改 td 的背景颜色

javascript - 有没有办法在另一个 JS 文件中包含一个 Javascript 文件?

javascript - 你如何使用 JavaScript 读取 CSS 规则值?

javascript - Wordpress 缺少 css 和 javascript 文件