jQuery toggleClass example

Toggle class name on click in jQuery

HTML

<div class="sortable">
   <div class="group-caption">
       <li class="main-parent category-sortable main-item" data-parent="4" data-position="4" data-newposition="1">second room 
                <span class="buttons-align">
                <label class="switch">
                    <input class="main-checkbox4" type="checkbox" id="user-4"
                        onclick="changeCategoryStatus(event.target, 4);"
                        >
                    <span class="slider round"></span>
                </label>
                
                </span>
                <div class="move" id="item-move" ><i class="fa fa-bars" aria-hidden="true"></i></div></li>
                <ul class="group-items group-items-parent">
                                                                                <li class="group-item-parent category-sortable" data-parent="5" data-position="1" data-newposition="1">second-child room 
                    <span class="buttons-align">
                    <label class="switch">
                        <input class="sub-checkbox4 sub-parent4" type="checkbox" id="user-5"
                            onclick="changeCategoryStatus(event.target, 5);"
                            >
                        <span class="slider round"></span>
                    </label>
                    </span>
                    <div class="move"><i class="fa fa-bars" aria-hidden="true"></i></div></li>

                                                                                <ul class="group-items-child">
                                                                    <li class="group-item-child category-sortable" data-parent="6" data-position="1" data-newposition="0">second subchild
                                    <span class="buttons-align">
                                    <label class="switch">
                                        <input class="sub-checkbox4" type="checkbox" id="user-6"
                                           ...

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#banner-message {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  font-size: 25px;
  text-align: center;
  transition: all 0.2s;
  margin: 0 auto;
  width: 300px;
}

button {
  background: #0084ff;
  border: none;
  border-radius: 5px;
  padding: 8px 14px;
  font-size: 15px;
  color: #fff;
}

#banner-message.alt {
  background: #0084ff;
  color: #fff;
  margin-top: 40px;
  width: 200px;
}

#banner-message.alt button {
  background: #fff;
  color: #000;
}

JavaScript

function changeCategoryStatus(_this, id) {

var main = document.querySelector(".main-checkbox"+id);
var children = document.querySelectorAll(".sub-checkbox"+id);

function toggleCheck() {

  var array=[];
  children.forEach(child => {
    if($(this).prop("checked") == true){
        child.checked = child.checked = true
    }
    else if($(this).prop("checked") == false){
        child.checked = child.checked = false
    }

    
    array.push(child.value);
    
  })

  return array;
}

if(main){
    main.addEventListener("click", toggleCheck);
}

//for sub-parent category

var sub_parent = document.querySelector(".sub-parent"+id);
var sub_children = document.querySelectorAll(".sub-checkbox"+id);

function toggleCheck() {

  var array=[];
  sub_children.forEach(child => {
    if($(this).prop("checked") == true){
        child.checked = child.checked = true
    }
    else if($(this).prop("checked") == false){
        child.checked = child.checked = false
    }

    
    array.push(child.value);
    
  })

  return array;
}

if(sub_parent){
    sub_parent.addEventListener("click", toggleCheck);
}

 
    var status = $(_this).prop('checked') == true ? 'active' : 'inactive';
    $.ajax({
        type: 'POST',
        url:"{{url('admin/categories-status')}}",
        data: {
            id: id,
            status: status,
            _token: "{{ csrf_token() }}"
        },
        success: function (result) {
        $("#status-success").show();
        $("#status-success").html(result.success);
        setTimeout(function() {
            $("#status-success").hide()
        }, 3000);
        }
    });

}