首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery - On change with multiple conditions

jQuery - On change with multiple conditions
EN

Stack Overflow用户
提问于 2020-09-09 04:01:04
回答 1查看 73关注 0票数 0

我想隐藏所有已提交的项目,以模拟仅显示当前需要上传的项目(隐藏存档项目)。

我只想让项目show/hide取决于复选框是否被选中。

我需要:如果一个文件是上传和提交是按->,如果复选框是选中->,隐藏已提交的项目。如果在上传文件并按下提交时未选中该复选框,则在某个时刻选中该复选框之前,不要隐藏该项目。

代码语言:javascript
复制
function count() {
  var x = $(".item:not(.archive)").length;
  $("#count").text(x);
}
count();
$("#state").change(function() {
  if (this.checked) {
    if ($(".item").hasClass("archive")) {
      $(".item.archive").addClass("hidden");
    }
  } else {
    $(".item.archive").removeClass("hidden");
  }
});
$(document).on("click", "button", function(e) {
  var $uploader = $(this).closest(".item").find("input");
  if ($uploader.val() !== "") {
    e.preventDefault();
    $(this).css("background-color", "#4dcb83");
    $(this).html("Archived");
    $(this).closest(".item").addClass("hidden");
    $(this).closest(".item").addClass("archive");
    $uploader.val("");
    count();
  }
});
代码语言:javascript
复制
.item {
  display: flex;
  width: 500px;
  padding: 1.3rem;
  border: 1px solid;
}

.item.hidden {
  display: none;
}

.top {
  display: flex;
  padding: 0 12px 12px
}

#count {
  margin-left: 6px
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="top">
  outstanding:
  <div id="count">0</div>
</div>
<label for="state">
  <input id="state" type="checkbox">
  Hide Archived?
</label>
<div class="list">
  <div class="item">
    <input type="file">
    <button>Submit</button>
  </div>
  <div class="item">
    <input type="file">
    <button>Submit</button>
  </div>
</div>

EN

回答 1

Stack Overflow用户

发布于 2020-09-09 07:30:26

我能够通过创建一个函数来处理项的状态并在提交项时调用它来解决这个问题。

在这个函数中,我检查项目是否被赋予了存档类,并找到了复选框的状态。

代码语言:javascript
复制
function archive() {
  var x = $(".item:not(.archive)").length;
  $("#count").text(x);
  if ($(".item").hasClass("archive") && $("#state").is(":checked")) {
    $(".item.archive").addClass("hidden");
  }
  $("#state").change(function () {
    if (this.checked) {
      if ($(".item").hasClass("archive")) {
        $(".item.archive").addClass("hidden");
      }
    } else {
      $(".item.archive").removeClass("hidden");
    }
  });
}
archive();
$(document).on("click", "button", function (e) {
  var $uploader = $(this).closest(".item").find("input");
  if ($uploader.val() !== "") {
    e.preventDefault();
    $(this).css("background-color", "#4dcb83");
    $(this).html("Sent");

    $(this).closest(".item").addClass("archive");
    $uploader.val("");
    archive();
  }
});
代码语言:javascript
复制
.item {
  display: flex;
  width: 500px;
  padding: 1.3rem;
  border: 1px solid;
}

.item.hidden {
  display: none;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="count">0</div>
<label for="state">
  <input id="state" type="checkbox" checked>
  Hide?
</label>
<div class="list">
  <div class="item">
    <input type="file">
    <button>Submit</button>
  </div>
  <div class="item">
    <input type="file">
    <button>Submit</button>
  </div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63800807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档