jQuery-如果选中了复选框,则删除活动类(多个条件)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery-如果选中了复选框,则删除活动类(多个条件)相关的知识,希望对你有一定的参考价值。

我想一次只保持一个.menu active,因此我设置了代码以删除最后一个接收到.menu类的active的活动类。我无法使用id,因为我有多个项目都有各自的唯一ID,因此我尝试使用data-typedata-id来调用每个唯一的按钮和菜单集。

当在每个项目上选择其他单选按钮之一时,如何获得删除active的最后一个.menu类的代码?换句话说,将active类赋予其对应按钮的.menu,但是如果选中了另一个收音机或再次选中了它,则将其删除(删除所有active菜单)。

$('input[name="studio"]').change(function() 
  var t = $(this).closest(".item");
  var id = $(this).data("type");
  $(".menu[data-id=" + id + "]").toggleClass("active", this.checked);
  var menuCat = t.find(".menu--categories");
  var menuLoc = t.find(".menu--locations");
  var menuProj = t.find(".menu--projects");
  var btnCat = $(this).closest(".cat_label").find("input[id=" + id + "]");
  var btnLoc = $(this).closest(".loc_label").find("input[id=" + id + "]");
  var btnProj = $(this).closest(".proj_label").find("input[id=" + id + "]");

  if (btnCat.is(":checked") && $(this).attr("id") === btnLoc) 
    btnLoc.prop("checked", true);
    btnCat.prop("checked", false);
    btnProj.prop("checked", false);
    menuCat.removeClass("active");
  
  if (btnCat.is(":checked") && $(this).attr("id") === btnProj) 
    btnProj.prop("checked", true);
    btnLoc.prop("checked", false);
    btnCat.prop("checked", false);
    menuCat.removeClass("active");
  
  if (btnLoc.is(":checked") && $(this).attr("id") === btnCat) 
    btnCat.prop("checked", true);
    btnProj.prop("checked", false);
    btnLoc.prop("checked", false);
    menuLoc.removeClass("active");
  
  if (btnLoc.is(":checked") && $(this).attr("id") === btnProj) 
    btnProj.prop("checked", true);
    btnCat.prop("checked", false);
    btnLoc.prop("checked", false);
    menuLoc.removeClass("active");
  
  if (btnProj.is(":checked") && $(this).attr("id") === btnCat) 
    btnCat.prop("checked", true);
    btnProj.prop("checked", false);
    btnLoc.prop("checked", false);
    menuProj.removeClass("active");
  
  if (btnProj.is(":checked") && $(this).attr("id") === btnLoc) 
    btnLoc.prop("checked", true);
    btnProj.prop("checked", false);
    btnCat.prop("checked", false);
    menuProj.removeClass("active");
  
);
.wrap 
  display: flex;


.item 
  border: 2px solid


.menu 
  height: 20px;
  width: 60px;
  border: 1px solid


.active 
  background: blue
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item">
  <div class="menu menu--categories" data-id="cat"></div>
  <label class="cat_label" for="cat" data-btn="categories">
    <input id="cat" data-type="cat" type="radio" name="studio" />
    Categories
  </label>
  <div class="menu menu--locations" data-id="loc"></div>
  <label class="loc_label" for="loc" data-btn="locations">
    <input id="loc" data-type="loc" type="radio" name="studio" />
    Locations
  </label>
  <div class="menu menu--projects" data-id="proj"></div>
  <label class="proj_label" for="proj" data-btn="projects">
    <input id="proj" data-type="proj" type="radio" name="studio" />
    Projects
  </label>
</div>
<div class="item">
  <div class="menu menu--categories" data-id="cat_2"></div>
  <label class="cat_label" for="cat_2" data-btn="categories">
    <input id="cat_2" data-type="cat_2" type="radio" name="studio" />
    Categories
  </label>
  <div class="menu menu--locations" data-id="loc_2"></div>
  <label class="loc_label" for="loc_2" data-btn="locations">
    <input id="loc_2" data-type="loc_2" type="radio" name="studio" />
    Locations
  </label>
  <div class="menu menu--projects" data-id="proj_2"></div>
  <label class="proj_label" for="proj_2" data-btn="projects">
    <input id="proj_2" data-type="proj_2" type="radio" name="studio" />
    Projects
  </label>
</div>
答案

如上所述,如Henrique所述,在所有带有菜单'menu'的项目上删除该类。

$('input[name="studio"]').change(function() 
        $('.menu').removeClass('active'); // add this line

以上是关于jQuery-如果选中了复选框,则删除活动类(多个条件)的主要内容,如果未能解决你的问题,请参考以下文章

如果选中 CheckAll 则全选,如果未选中则使用 jQuery 从 Gridview 中取消全选

如果在 Jquery 加载页面时在网格中禁用了所有复选框,则如果没有选中复选框并禁用按钮,则发出警报

如果选中复选框,则打开输入文本(JQuery)

Jquery删除table里面checkbox选中的多个行

如果选中,则更改复选框旁边的文本。 HTML + JS 或 jQuery [关闭]

Jquery实现账单全部选中和部分选中管理