2011-06-03 11 views
11

EDIT:cómo marcar todas las casillas dentro de un div en jQuery?

Gracias por las respuestas chicos, que tiene un aspecto correcto y funciona en jsfiddle.net, pero en mi código se dispare la alerta así, sin embargo, no pasa nada a las casillas de verificación. :/

 $('#selectChb').click(function(){ 
     $(':checkbox').prop("checked", true); 
     alert("1"); 
    }); 

    $('#deselectChb').click(function(){ 
     $(':checkbox').prop("checked", false); 
     alert("2"); 
    }); 

...

<div id="chbDiv" class="ui-widget ui-widget-content ui-corner-all" > <br></br> 
    <table width="90%" border="0" align="center" cellpadding="5" cellspacing="0"> 
    <tr> 
    <td colspan="2">Following:</td> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td width="25" align="left"><input type="checkbox" id="check1" /><label for="check1">&nbsp;</label></td> 
    <td width="45" align="center"><img src="face_01.jpg" width="32" height="32"></td> 
    <td>Andrew Lloyd Webber</td> 
    </tr> 
     <tr> 
    <td width="25" align="left"><input type="checkbox" id="check2" /><label for="check2">&nbsp;</label></td> 
    <td width="25" align="center"><img src="face_02.jpg" width="32" height="32"></td> 
    <td>Richard Branson</td> 
    </tr> 
     <tr> 
    <td width="25" align="left"><input type="checkbox" id="check3" /><label for="check3">&nbsp;</label></td> 
    <td width="25" align="center"><img src="face_03.jpg" width="32" height="32"></td> 
    <td>Dmitry Medvedev</td> 
    </tr> 
</table> 
    <br> 
    <table width="90%" border="0" align="center" cellpadding="5" cellspacing="0"> 
    <tr> 
     <td><a href="#" id="selectChb" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-check"></span>Select All</a>&nbsp; 
     <a href="#" id="deselectChb" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-close"></span>Deselect All</a></td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
    </tr> 
    </table> 
<br> 

</div> 
    <br> 
    <div class="ui-widget ui-widget-content ui-corner-all"> 
+0

¿Qué navegador está probando y qué versión de jQuery? –

+0

FireFox, última versión de jQuery, 1.6.1 – Roger

Respuesta

3

Pruebe cada iteración a través de los objetos que encuentres

$ ('# selectChb') haga clic en (function() {

alert("c!"); 

    $('#chbDiv').find(':checkbox').each(function(){ 

      $(this).attr('checked', !checkbox.attr('checked')); 

    }); 
}); 
.
+0

Es posible que desee hacer referencia a que esto es anterior a 1.6. Post 1.6 debería usar 'prop();' en su lugar. –

1

Este código activará las casillas de verificación. desmarcar es una clase dada a a href.

$('.uncheck').bind('click', function(e) { 

    $(':checkbox').prop('checked', ($(':checkbox').prop('checked')) ? false : true); 

    e.preventDefault(); 

}); 
+0

gracias por la respuesta, pero un poco extrañamente no funciona. ver editar arriba. – Roger

10

Intente lo siguiente,

Live Demo

$('#selectChb').click(function(){ 
    $(':checkbox').prop("checked", true); 
}); 
+0

gracias por la respuesta, pero un poco extrañamente no funciona. ver editar arriba. – Roger

21

Esta es una solución definitiva derivada que encuentra todos casillas de verificación dentro de un DIV y cheques o desactiva de acuerdo con una otra casilla de verificación solo fuera de la DIV que dice marcar/desmarcar

function checkCheckboxes(id, pID){ 

    $('#'+pID).find(':checkbox').each(function(){ 

     jQuery(this).attr('checked', $('#' + id).is(':checked')); 

    });  

} 

Uso:

<label>check/uncheck 
<input type="checkbox" id="checkall" value="1" 
onclick="checkCheckboxes(this.id, 'mycheckboxesdiv');" > 
</label> 

<div id="mycheckboxesdiv"> 
<input type="checkbox" value="test1" name="test"> 
<input type="checkbox" value="test2" name="anothertest"> 
<input type="checkbox" value="test3" name="tests[]"> 
<input type="checkbox" value="test1" name="tests[]"> 
</div> 

ventaja es que se puede utilizar conjuntos de casillas de verificación independientes y activar/desactivar todos independientes de otros conjuntos. Es simple y no es necesario trabajar con id o clases de cada casilla de verificación.

+2

No consigo que esto funcione después de la primera vez; los clics repetidos del cuadro "marcar todo" no vuelven a seleccionar todo: | – Adam

4

Prueba este código

$("#Div_ID").find('input[type=checkbox]').each(function() { 
      // some staff 
      this.checked = true; 
     }); 
-1

intentar sustituir

 $(':checkbox').prop("checked", true); 

con

 $(':checkbox').attr("checked", true); 

prop no está soportado en algunas versiones de navegadores

0

Pruebe lo siguiente para activar las casillas de verificación

var bool = false; 
    $('#selectAll').click(function(e){ 
    $('.users-list :checkbox').prop("checked", bool); 
    bool = !bool; 
}); 
1

No se han comentado las respuestas de latis debido a problemas de reputación.

tipo de muy tarde, pero esto funcionó para mí (todos los créditos a Latis)

function checkCheckboxes(id, pID){ 
     $('#'+pID).find(':checkbox').each(function(){ 
      $(this).prop('checked', $('#' + id).is(':checked')); 
     });  
    } 

Básicamente reemplazados attr con prop.

+0

"No se pudo comentar la respuesta de Latis debido a problemas de reputación". Si solo está tratando de hacer un comentario, por favor no lo publique como respuesta, vea http://meta.stackexchange.com/a/214174/189840. –

1

He tenido una (pseudo) tabla que contiene filas de casillas de verificación que quería poder marcar/desmarcar con un solo clic.

Para lograr esto, asigné ids a las filas respectivas (con php durante un bucle) y terminé cada fila con otra casilla que dí a la clase "alternar" y el valor igual al ID de la fila/div adjunta .

así:

<div class="table"> 
    <div class="row" id="rowId"> 
    <span class="td"><input type="checkbox" name="cb1"></span> 
    <span class="td"><input type="checkbox" name="cb2"></span> 
    <span class="td"><input type="checkbox" name="cbn"></span> 
    <span class="td"><input type="checkbox" class="toggle" value="rowId"></span> 
    </div> 
... 
</div> 

Entonces creé el siguiente script para disparar cuando se hace clic en esta casilla:

$(".toggle").click(function(){ 
    var id = this.value;   
    if ($(this).attr("checked")) { 
     $(this).attr("checked", false);   
     $('#' + id).find(':checkbox').prop("checked", false); 
    } else { 
     $(this).attr("checked", true); 
     $('#' + id).find(':checkbox').prop("checked", true);    
    }   
}); 

Espero que esto ayude.

EDITAR: Eliminado global de la secuencia de comandos y comportamiento de comprobación ajustado.

Cuestiones relacionadas