javascript - 选中复选框时淡入/淡出最接近的 div

标签 javascript jquery html css

我有一个表单,其中包含一些我不想显示的可选字段,除非用户特别启用它们。我正在努力找出 .closest() jQuery 中的方法希望得到一些指导。有多种这样的形式,所以我不想为了 DRY 而给我们一个#id。

$('.enable-stage').change(function() {
  if ($(this).is(':checked')) {
    $(this).closest('.stage-dates').fadeIn("slow").toggleClass("hidden");
  } else {
    $(this).closest('.stage-dates').fadeOut("slow").toggleClass("hidden");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="stage">
  <h3>Stage Name</h3>
  <label><input type="checkbox" class="enable-stage"> Enable Stage</label>
  <div class="stage-dates hidden">
    <input type="date">
  </div>
</div>

我认识将军if语句有效,因为使用 console.log("checked") 时和 console.log("unchecked")if里面, 有用。我想我对 .closest 处理不当方法,但我不知道如何/为什么。

编辑:为了澄清起见,我试图做到这一点,所以当复选框被选中时最接近 .stage-dates div 淡入,未选中时淡出。

最佳答案

$.closest() 返回所选元素的第一个祖先。它不会搜索整个 DOM 并返回最接近的匹配项。要在这里使用 $.closest(),我们可以找到最接近的 label(因为 label 是复选框的祖先),然后使用 $.next() 到目标 .stage-dates

$('.enable-stage').change(function() {
  var $closest = $(this).closest('label').next('.stage-dates');
  if ($(this).is(':checked')) {
    $closest.fadeIn("slow").toggleClass("hidden");
  } else {
    $closest.fadeOut("slow").toggleClass("hidden");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="stage">
    <h3>Stage Name</h3>
    <label><input checked type="checkbox" class="enable-stage"> Enable Stage</label>
    <div class="stage-dates hidden">
        <input type="date">
    </div>
</div>

关于javascript - 选中复选框时淡入/淡出最接近的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41841931/

相关文章:

javascript - 为什么这适用于除 Opera 之外的所有其他浏览器?

javascript - 在单个 ajax 调用中发布 json + 表单数据

javascript - 仅当事物存在时才 react setState?

javascript - 将叠加层的内容放在中间

javascript - 我的 JavaScript 打印代码有效但无法使用 css

javascript - 如何使用 Jquery 将 txt 文件加载到 div 选项卡中

javascript - jQuery Ajax 回调无法识别 $(this) 对象

html - 最小化 iOS 邮件应用程序会破坏 CSS 动画中的 z-index

html - 我怎样才能给这张 table 圆 Angular 的边框,并仍然保持我的配色方案?

javascript - 定位聊天栏 (JavaScript)