2010-10-01 14 views
5

Voglio che la casella di controllo sia spuntata quando sto usando la funzione di commutazione jQuery. Funziona bene quando uso lo .bind('click').Checkbox non viene controllato quando si usa jquery toggle

$('#chkb').toggle(function() { 

    $('#va').text("checked"); 
    $('#chkb').attr('checked', 'checked'); 

}, 
function() { 

    $('#chkb').attr('checked', 'false'); 
    $('#va').text(""); 

}); 

html

<input type="checkbox" id="chkb" /> 

Come posso avere fatto.

Grazie Jean

+0

Che ne dici di questo: var apchk = ''; . \t \t \t \t \t \t \t \t $ ('# c') html (apchk); – X10nD

+0

come * su * quello? –

risposta

1

Devi proprio per checked nel codice? (C'è qualcosa che mi mancava? Casella di controllo se cliccata, già a ginocchiera è verificato valore di attributo.)

modo migliore per farlo è quello di utilizzare cambiamento come questo,

$('#chkb').change(function() { 
    var self = this; 
    $('#va').text(function(i,text){ 
     return self.checked?"checked":""; 
    }); 
}) 
+1

È anche possibile selezionare una casella di controllo con la tastiera. – ZeissS

+0

ahh ... quindi meglio usare '.change()' allora. ;) – Reigel

+0

Che dire di questo var apchk = ''; . \t \t \t \t \t \t \t \t $ ('# c') html (apchk); – X10nD

2
chkb = $('#chkb'); 
va = $('#va'); 

chkb.change(function() { 
    va.text(chkb[0].checked ? "checked" : ""); 
}); 

selettori di memorizzazione nella cache in variabili velocità le cose - non deve cercare la dom ogni volta. Mettendo chkb in una variabile significa che può essere utilizzato altrove nel tuo jQuery, invece di usare this.

+1

+1^_^un commento però. Sebbene jQuery ti aiuti molto, non abusarne. 'chkb [0] .checked' è più veloce di' chkb.is (': checked') '. Saluti! – Reigel

+0

@reigel, grazie ok si modifica – NimChimpsky

+0

vuoi dire [questo codice] (http://jsfiddle.net/VJj4R/) non ha funzionato su di te? – Reigel

Problemi correlati