【问题标题】:addClass to label if checkbox is checked, even on page refresh如果选中复选框,则添加类到标签,即使在页面刷新时
【发布时间】:2016-07-15 07:05:31
【问题描述】:

我将如何在 jQuery 中编写以下内容?:

When page load / (or "Continue" button is clicked, if makes more sense)
    Find input[type=checkbox] in each .block-container
        If input is checked
            add class to label
        If input is not checked
            remove class from label

我有一长串遵循这种结构的复选框:

<div class="block-container">
    <div class="inner-container">
        <div class="form-group wpcf7-form-control wpcf7-checkbox checkbox-418">
            <div class="checkbox wpcf7-form-control wpcf7-checkbox checkbox-418 checked_check">
                <label class="">
                    <input type="checkbox" aria-invalid="false" value="Lorem ipsum title" name="checkbox-418" novalidate="novalidate" class="garlic-auto-save" checked="checked">
                    Lorem ipsum title</label>
            </div>
        </div>
    </div>
</div>

我有一个 toggleClass 在它们被点击时为标签添加颜色,还有一个花哨的复选框图标(复选框本身移到屏幕外)但是当页面刷新时,即使复选框是,也不会应用该类仍然检查。

因此,如果用户刷新页面,他们选中的复选框将保持选中状态,但视觉指示器(颜色、花哨的复选框)在他们看来是未选中的,因此他们将再次选中它并最终取消选中选中.

提前致谢。

编辑以添加我尝试过的内容:

$(document).ready(function() {
    $('.select-action').on('click',function() {
        $('.block-container input').each(function() {
            if ($("input[type=checkbox]").prop('checked')) {
                $(this).parent("label").addClass("symptomChecked");
                $(this).parent().parent().removeClass("empty_check").addClass("checked_check");
            } else {
                $("input").parent("label").removeClass("symptomChecked");
                $(this).parent().parent().removeClass("checked_check").addClass("empty_check");
            }
        });
    });
});

【问题讨论】:

  • 你有没有尝试过,如果尝试过分享一下
  • @ArunPJohny 编辑了我的帖子,谢谢

标签: jquery checkbox


【解决方案1】:

您可以拥有一个可以在页面加载时手动触发的更改事件处理程序

$(document).ready(function() {
  $('.block-container input[type="checkbox"]').on('change.symptom', function() {
    $(this).parent().toggleClass('symptomChecked', this.checked);
    $(this).closest('.checkbox').toggleClass('checked_check', this.checked).toggleClass('empty_check', !this.checked);
  }).trigger('change.symptom');
});
.symptomChecked {
  color: green;
}
.empty_check {
  background-color: grey;
}
.checked_check {
  border: 1 px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="block-container">
  <div class="inner-container">
    <div class="form-group wpcf7-form-control wpcf7-checkbox checkbox-418">
      <div class="checkbox wpcf7-form-control wpcf7-checkbox checkbox-418 checked_check">
        <label class="">
          <input type="checkbox" aria-invalid="false" value="Lorem ipsum title" name="checkbox-418" novalidate="novalidate" class="garlic-auto-save" checked="checked">Lorem ipsum title</label>
      </div>
    </div>
  </div>
</div>
<div class="block-container">
  <div class="inner-container">
    <div class="form-group wpcf7-form-control wpcf7-checkbox checkbox-418">
      <div class="checkbox wpcf7-form-control wpcf7-checkbox checkbox-418">
        <label class="">
          <input type="checkbox" aria-invalid="false" value="Lorem ipsum title" name="checkbox-418" novalidate="novalidate" class="garlic-auto-save">Lorem ipsum title</label>
      </div>
    </div>
  </div>
</div>
<div class="block-container">
  <div class="inner-container">
    <div class="form-group wpcf7-form-control wpcf7-checkbox checkbox-418">
      <div class="checkbox wpcf7-form-control wpcf7-checkbox checkbox-418">
        <label class="">
          <input type="checkbox" aria-invalid="false" value="Lorem ipsum title" name="checkbox-418" novalidate="novalidate" class="garlic-auto-save">Lorem ipsum title</label>
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 谢谢,这会在更改时切换样式。即使在页面刷新时,我也需要保持样式。目前,选中状态本身被保留,但样式消失了。
  • .trigger('change.symptom') 应该在页面加载时触发更改事件,该事件应该分配正确的样式
  • 它没有为我分配页面加载样式。大蒜.js(会话存储)会影响这个吗?不知道为什么它对我不起作用。
  • @bunnycode 如果你使用会话存储来更新检查状态,那么$('.block-container input[type="checkbox"]').trigger('change.symptom');必须在更新状态后完成
  • 请原谅我的无知,但您能否澄清一下“更新状态后”的意思?现在它确实在garlic.js之后,你是这个意思吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
相关资源
最近更新 更多