2009-07-21 23 views
11

Estoy tratando de escribir un fragmento de código jQuery donde, si todas las casillas de verificación están "desmarcadas", todas las etiquetas li tienen la clase "deshabilitada".casillas de verificación jQuery

Pero, si se marca una casilla (cualquier casilla de verificación), todas las etiquetas [li] pierden la clase "deshabilitada".

¡Muchas gracias!

+0

¿Quieres para eliminar la clase "deshabilitada" si se marca al menos una casilla de verificación O BIEN se marca una casilla de verificación? – SolutionYogi

+0

Lo quiero si al menos una casilla de verificación está marcada. –

+0

¡Gracias RaYell, tu código ayudó muchísimo! –

Respuesta

15
$(':checkbox').click(function() { 
    $('li').toggleClass('disabled', !$(':checkbox:checked').length); 
}); 
+0

Debería usar $ ('# myform input [type = checkbox]: checked') si solo quiere las casillas de verificación en un formulario con id myform. –

+0

Creo que quería decir $ ("li") en lugar de $ ("*"). –

+0

Sí, noté ese error y lo solucioné. – RaYell

1
$(':checkbox') 
    .click(
     function() 
     { 
      $('li').toggleClass('disabled', $(':checkbox :checked').length <= 0)); 
     } 
    ); 

EDIT: Gracias Ken por señalar método toggleClass.

5

modificación leve del RaYell de, que incluirá ninguna casilla de verificación añadidos dinámicamente:

$(':checkbox').live('click', function() { 
    $('li').toggleClass('disabled', !$(':checkbox:checked').length); 
}); 
+6

"cambio" no es un buen evento para capturar casillas de verificación.Siempre debe usar "hacer clic" (que también se activa cuando se selecciona una casilla de verificación con el teclado). –

+0

Excelente punto, y uno que debería haber recordado del código anterior. IE no maneja el "cambio" en las casillas de verificación, para empezar. –

8

me encontré con este aviso por accidente y pensé que iba a añadir mi chelín vale:

jQuery(':checkbox').click(function() 
{ 
    if (jQuery(this).is(':checked')) 
    { 
     alert("Checked"); 
    } 
    else 
    { 
     alert("Unchecked"); 
    } 
}); 
+0

Esto no aplica una clase o examina todas las demás casillas de verificación, por lo que no resuelve realmente el problema del OP. Agregar un controlador de clics a las casillas de verificación y luego ver si el elemento cliqueado está marcado es un poco la parte fácil :( –

Cuestiones relacionadas