JQuery: el evento de cambio de checkbox no se activa si se marca con JQuery

Tengo esta función Check All , que marca todas las casillas de verificación. Yo uso JQuery para hacer eso.

Pero también tengo esto on change función de on change que alternar una clase a la div del contenedor:

 $('input[type="checkbox"]').on('change', function(){ $(this).closest('div').toggleClass('highlight'); }); 

Esa función se ejecuta cuando hago clic en la checkbox, pero no si hago clic en Check all .

¿Hay alguna forma de activar manualmente un evento utilizando JQuery? ¿O hay una mejor solución?

Gracias

EDITAR:

Aquí está el HTML simplificado:

 Check All 
ABC
PQR
XYZ

Aquí está el JSFiddle

http://jsfiddle.net/DarcFiddle/d4VTh/

Después de hacer clic, marque todo lo que debe llamar al evento change () como este

 $(document).ready(function(){ $("input[type='checkbox']").on('change', function(){ $(this).closest('div').toggleClass('highlight'); }); $("#check_all").on('click', function(){ $("input[type='checkbox']").prop('checked', true).change(); }); }); 

Esto desencadenará el evento de change , pero solo después de que lo vincule primero.

 $('input[type="checkbox]').trigger('change'); 

Puedes probar esto,

 $(document).on('change','input[type="checkbox]' ,function(){ // $this will contain a reference to the checkbox var $this = $(this); if ($this.is(':checked')){//To CHECK CHECK BOX IS CHECKED OR NOT $(this).closest('div').toggleClass('highlight'); } }); 

Espero eso ayude,

Casi idéntica a la respuesta de visnu, pero al llamar directamente a click () se activarán todos los eventos de clic vinculados por jQuery. Si hace una demostración de esto, verá que también desmarca las casillas, mientras que su respuesta simplemente elimina el resaltado mientras permanecen pulsadas.

 $(document).ready(function(){ $("input[type='checkbox']").on('change', function(){ $(this).closest('div').toggleClass('highlight'); }); $("#check_all").on('click', function(){ $("input[type='checkbox']").click(); }); }); 

Compruebe esta modificación violín de su código: http://jsfiddle.net/d4VTh/51/

 $(document).ready(function(){ $("input[type='checkbox']").on('change', function(){ if (this.checked) $(this).closest('div').addClass('highlight'); else $(this).closest('div').removeClass('highlight'); }); $("#check_all").on('click', function(){ var item = $("input[type='checkbox']") item.prop('checked', !item.prop('checked')).change(); }); });