2009-07-21 9 views
11

Sto provando a scrivere un pezzo di codice jQuery dove, se tutte le caselle di controllo sono "deselezionate", tutti i tag li hanno la classe "disabilitata".jQuery Checkboxes

Tuttavia, se una casella di spunta (qualsiasi casella di controllo) è selezionata, tutti i tag [li] perdono la classe "disabilitata".

Grazie mille!

+0

Vuoi rimuovere la classe 'disabilitata' se è selezionata almeno una casella di controllo O ESATTAMENTE una casella di controllo è spuntata? – SolutionYogi

+0

Lo voglio se almeno una casella di controllo è selezionata. –

+0

Grazie a RaYell, il tuo codice ha aiutato moltissimo! –

risposta

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

Dovresti usare $ ('# myform input [type = checkbox]: checked') se vuoi solo le checkbox in un modulo con id myform. –

+0

Penso che intendessi $ ("li") invece di $ ("*"). –

+0

Sì, ho notato che l'errore di battitura e risolto. – RaYell

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

EDIT: Grazie Ken per aver ricordato il metodo toggleClass.

5

leggera modifica RaYell di, che comprenderà tutte le caselle di controllo aggiunti dinamicamente:

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

"change" non è un buon evento da catturare per le checkbox.Dovresti sempre usare "click" (che viene attivato anche quando viene selezionata una casella di controllo usando la tastiera). –

+0

Punto eccellente, e uno che avrei dovuto ricordare dal codice precedente. IE non gestisce "change" sulle checkbox, per i principianti. –

8

mi sono imbattuto in questo post per caso e ho pensato di aggiungere il mio scellino vale la pena:

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

Questo non applica una classe, o esamina tutte le altre caselle di controllo, quindi non risolve il problema dell'OP. Aggiungere un gestore di clic alle caselle di controllo e vedere se l'elemento selezionato è selezionato è piuttosto la parte facile :( –

Problemi correlati