Jquery 如何单击克隆标签并将checkbox checked属性更改为false&;单击复选框并删除克隆

Jquery 如何单击克隆标签并将checkbox checked属性更改为false&;单击复选框并删除克隆,jquery,checkbox,clone,Jquery,Checkbox,Clone,我有一个搜索过滤器,我需要修改。应该发生的是,当您单击过滤器(复选框和单选按钮)时,相应标签的克隆会在标题部分中得到输出。然后,再次单击复选框或单选按钮时,标签应消失。克隆标签也是如此。删除此复选框时,复选框的属性应更改为未选中 两个并发症。1) 任何解决方案都必须使用jQuery 1.7(2)页面上正在使用AJAX。为了避免出现奇怪的情况(例如,首次打开后立即再次触发滑动切换),我使用了.one(),但这会导致克隆只创建一次 所以我有两个问题。单击克隆时如何删除复选框上的checked属性,反

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

两个并发症。1) 任何解决方案都必须使用jQuery 1.7(2)页面上正在使用AJAX。为了避免出现奇怪的情况(例如,首次打开后立即再次触发滑动切换),我使用了
.one()
,但这会导致克隆只创建一次

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

$("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");
});
  • 使用
    label for=“one”
    时,相应的
    输入应具有
    id=“one”
    。否则,标签将不会按预期更改输入的状态

  • 您最好跟踪检查的输入状态,而不是单击。因此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");
      }
    });
    
    
    复选框1
    复选框2
    复选框3
    请注意,输入最终将被隐藏并替换为切换的:before

    $('input')。在('change',function()上{ var self=$(这是); if(self.is(':checked')){ self.prev('label').clone().addClass(“克隆”) .附录(“标题”); self.prev('label').addClass('is checked'); }否则{ $('header label[for=“”+self.attr('id')+”).replacetwith(“”); self.prev('label').removeClass('is checked'); } });
    哦!这是一个非常聪明的方法。谢谢:D