JQuery: Marcar e desmarcar todos checkboxes

HTML

<form action="" name="form" method="post">
  <p><input type="checkbox" id="checkTodos" name="checkTodos"> Selecionar Todos</p>

  <p><input type="checkbox" class="categoria" value="1"> Item 1</p>
  <p><input type="checkbox" class="categoria" value="2"> Item 2</p>
  <p><input type="checkbox" class="categoria" value="3"> Item 3</p>
  <p><input type="checkbox" class="categoria" value="4"> Item 4</p>
</form>

JavaScript

$("#checkTodos__").change(function () {
    $("input:checkbox").prop('checked', $(this).prop("checked"));
});

$("#checkTodos__").click(function(){
    $('input:checkbox').not(this).prop('checked', this.checked);
});

var checkTodos = $("#checkTodos");
checkTodos.click(function () {
  if ( $(this).is(':checked') ){
    $('input:checkbox').prop("checked", true);
  }else{
    $('input:checkbox').prop("checked", false);
  }
});

var categoria = $(".categoria");
    categoria.click(function(){
        if ( $(this).is(':checked') ){
            $('#checkTodos').prop("checked", false);
        }else{
            $('#checkTodos').prop("checked", false);
        }
    }); if (categoria.prop("checked", true)){
            $('#checkTodos').prop("checked", true);
        } else {
            $('#checkTodos').prop("checked", false);
        }