2013-08-26 13 views
9

Quando eseguo il seguente codice autonomo, la casella di controllo viene spuntata e deselezionata una volta, ma da quel momento in poi non sembra che i messaggi implichino la commutazione.Perché jQuery non sta controllando/deselezionando la casella di controllo

<html> 
<head> 
<title>dummy</title> 
<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 
<input id="fc" type="checkbox" /> 
<script> 
function f() { 
    if (typeof $("#fc").attr("checked") !== 'undefined') { 
    alert("checked, unchecking"); 
    $("#fc").removeAttr("checked"); 
    } else { 
    alert("unchecked, checking"); 
    $("#fc").attr("checked", "checked"); 
    } 
    setTimeout(f, 1000); 
} 
setTimeout(f, 1000); 
</script> 
</body> 
</html> 
+1

Testato in Firefox e sembra funzionare la prima volta, ma è appena visualizzato come non selezionato. –

+0

corretto, lo stesso per me in Chrome e Firefox – necromancer

risposta

20

necessità di usare .prop() anziché .attr() per controllare e caselle deseleziona

$("#fc").prop("checked", true);// true to check false to uncheck 

utilizzi anche: controllato filtro per verificare se una casella è selezionata

function f() { 
    if ($("#fc").is(":checked")) { 
     alert("checked, unchecking"); 
     $("#fc").prop("checked", false); 
    } else { 
     alert("unchecked, checking"); 
     $("#fc").prop("checked", true); 
    } 
    setTimeout(f, 1000); 
} 
setTimeout(f, 1000); 

Il campione sopra riportato può essere semplificato come

function f() { 
    $("#fc").prop("checked", !$("#fc").is(":checked")); 
} 
setInterval(f, 1000); 

Demo: Fiddle

+0

Non c'è niente di sbagliato nell'uso di 'attr'. http://jsfiddle.net/YC2TS/ – Vandesh

+0

@Vandesh fallisce qui http://jsfiddle.net/arunpjohny/fDZXR/1/ –

+2

@Vandesh: C'è molto di sbagliato in questo. Vedete, una grande differenza tra l'attributo 'checked' * * e la proprietà' checked' * *, è che la proprietà ottiene/imposta il valore corrente e l'attributo ottiene/imposta il valore iniziale (e non influenzerà lo stato della scatola in seguito). – cHao

Problemi correlati