jquery - 如何单击克隆标签并将复选框选中属性更改为 false & 单击复选框并删除克隆

标签 jquery checkbox clone

我有一个搜索过滤器需要修改。应该发生的情况是,当您单击过滤器(复选框和单选按钮)时,相应标签的克隆将在标题部分中输出。然后,当再次单击复选框或单选按钮时,标签应该消失。克隆标签也是如此。删除此复选框后,该复选框的属性应更改为未选中。

两个并发症。 1) 任何解决方案都必须使用 jQuery 1.7 2) 页面上使用 AJAX。为了解决奇怪的问题(例如,在初始打开后立即再次触发 SlideToggle),我使用 .one() 但这会导致克隆仅创建一次。

所以我有两个问题。单击克隆时如何删除复选框上选中的属性,反之亦然

<强> EXAMPLE of below code in action

$("section label").one("click", function() {

  var clonedContent = $(this)
    .first()
    .clone()
    .children()
    .end()
    .addClass("clone");
    $("header").append(clonedContent).addClass("clone");
});

$("header").on("click", ".clone", function() {
  var forAttr = $(this).attr("for");
  console.log(forAttr);
  // $(this).parents(".wrap").find(forAttr).removeClass("is-checked").siblings('input').prop('checked',false);
  $(this)
    .remove()
    .parents(".wrap")
    .find("section label")
    .removeClass("is-checked");
});

$("section label").click(function() {
  $(this).toggleClass("is-checked");
});

最佳答案

  1. 当您使用label for="one"时,相应的input应具有id="one"。否则标签将不会按预期更改输入的状态。

  2. 您最好跟踪输入的选中状态而不是点击。所以js就很简单了。

请将您的 html 和 js 替换为以下内容:

<div class="wrap">
  <header></header>
  <form>
    <div class="label-wrap"><label for="one">Checkbox 1</label><input id="one" type="checkbox" /></div>
    <div class="label-wrap"><label for="two">Checkbox 2</label><input id="two" type="checkbox" /></div>
    <div class="label-wrap"><label for="three">Checkbox 3</label><input id="three" type="checkbox" /></div>

    <p>note that &lt;input&gt; will be hidden eventually and replaced with a toggled :before</p>
  </form>
</div>


$('input').on('change', function() {
  var self = $(this);
  if(self.is(':checked')) {
    self.prev('label').clone().addClass("clone")
    .appendTo("header");
    self.prev('label').addClass("is-checked");
  } else {
    $('header label[for="' + self.attr('id') + '"]').replaceWith('');
    self.prev('label').removeClass("is-checked");
  }
});

关于jquery - 如何单击克隆标签并将复选框选中属性更改为 false & 单击复选框并删除克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44338447/

相关文章:

javascript - 显示时添加复选框值不适用于隐藏的 `div`

jQuery 并始终执行一次事件

android - setOnItemClickListener 不适用于复选框?

javascript - 在 React Hook 表单中验证以确保至少选中一个复选框?

android - 无法在 Android 应用程序中对齐复选框(水平/垂直)

java - 引用对象的实例变量

javascript - 为什么 setInterval 在上次迭代后不调用匿名

jquery - 我如何修改支持 Jalali 日历和达里月的 jquery datepicker?

java - 对 Java 中的克隆感到困惑

c# - memberwiseclone 还会复制派生类中定义的成员吗?