Home > other >  .remove() not removing item in Jquery when checkbox unselected
.remove() not removing item in Jquery when checkbox unselected

Time:02-05

I have checkbox that append an item when selected but will not remove it when deselected, just to clarify the appending part is working fine.

the jQuery :

   $('.category-checkbox input[type="checkbox"]').click(function (){
        if ($(this).is(':checked')) {
             // Add the element to the div with an id identifier
             $('.items').append('<div id="[{{category.id}}]">123123</div>');
        } else  {
             // Remove the element from the div targeted by the id identifier
             $('.items #[{{category.id}}]').remove();
        }
    });

the template:

<div >
    <div class='category'>
        <div>Categories</div>
        <div class='category-checkbox'>
            {%for category in categories%}
            <input type="checkbox" id="{{category.id}}" name="{{category.name}}" value="{{category.id}}">
            <label for="{{category.name}}"> {{category.name}}</label><br>
            {%endfor%}
        </div>
    </div>
    <div class='items'></div>

</div>    

CodePudding user response:

First you would run into problem with duplicated ids, once you did your append. Second jquery don't know what {{category.id}} refers to.

You could do it like:

$('.category-checkbox input[type="checkbox"]').click(function() {
  if ($(this).is(':checked')) {
    // Add the element to the div with an id identifier
    $('.items').append(`<div id="item_${this.id}">123123</div>`);
  } else {
    // Remove the element from the div targeted by the id identifier
    $(`#item_${this.id}`).remove();
  }
});

Demo

$('.category-checkbox input[type="checkbox"]').click(function() {
  if ($(this).is(':checked')) {
    // Add the element to the div with an id identifier
    $('.items').append(`<div id="item_${this.id}">123123</div>`);
  } else {
    // Remove the element from the div targeted by the id identifier
    $(`#item_${this.id}`).remove();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div >
  <div class='category'>
    <div>Categories</div>
    <div class='category-checkbox'>
      <input type="checkbox" id="cat1" name="cat1" value="cat1">
      <label for="cat1"> cat1</label><br>
      <input type="checkbox" id="cat2" name="cat2" value="cat2">
      <label for="cat2"> cat2</label><br>
      <input type="checkbox" id="cat3" name="cat3" value="cat3">
      <label for="cat3"> cat3</label><br>
    </div>
  </div>
  <div class='items'></div>

</div>

  •  Tags:  
  • Related