2011-01-26 1 views
14

Eventuali duplicati:
Check checkbox checked property using jQueryjQuery se casella di controllo non è selezionata problema

Sto avendo un problema raccogliendo quando una casella di controllo non è selezionata.

Ecco il mio codice di esempio:

$(".get-the-look ul input").click(function(){ 
    if("this:checked") { 
     var product = $(this).attr('alt'); 
     $("#bob div").remove('.'+product); 
    } else { 
     alert('asdasd'); 
    } 
}); 

Ma l'allarme (se la casella di controllo non è selezionata) non si attiva mai ... L' 'altro' non entra in gioco, non importa quale stato la casella di controllo è in?

Non vedo dove sto andando male.

risposta

18

non è possibile passare this:checked come stringa - non funzionerà come sarà interpretato come una stringa e sempre valutare al true

uso $(this).is(':checked') invece

+0

sì $ (this) .è (: selezionata) è consentito! – Harish

+0

un altro po 'simile q/a: http://stackoverflow.com/questions/2525331/jquery-checked-checkbox-ie-problem – Forhad

2

La stringa "this:checked" sarà sempre valutata come TRUE. Prova this.checked invece, vale a dire, valutare la proprietà checked su this:

if(this.checked) { ... 
+0

Hmm, un po' tardi su quello :) Inoltre, assicurati di provare ad accedere '.checked' su' jensgram

+0

sì :) ma usando nativo this.checked farà il suo lavoro (e anche più velocemente) - ha dato risposta jquery per coerenza con il resto dell'esempio e per mostrare come dovrebbe essere usato correttamente –

+0

@Tom Hu Yup! Inoltre, ho dimenticato il riferimento a [* Utilizzando la straordinaria potenza di jQuery per accedere alle proprietà di un elemento *] (http://whattheheadsaid.com/2010/10/utilizing -the-awesome-power-of-jquery-to-access-properties-of-an-element) a cui collego ogni volta che posso :) – jensgram