2012-02-08 12 views
13

sto usando le etichette per la mia forma, in questo modo:Bind JavaScript jQuery evento click sull'etichetta e sulla casella di controllo simultaneamente

<label for="foo" id="bar">Label</label> 
<input type="checkbox" id="foo" /> 

voglio nascondere un elemento quando l'utente deselezionare la casella, e mostrarlo altrimenti .

Il problema è che se lego l'evento click a "foo", funzionerà solo quando l'utente fa clic sulla casella di controllo stessa e non sull'etichetta. Pertanto, devo anche associare un evento click sull'etichetta? O dovrei includere entrambi gli elementi all'interno di un intervallo? Il mio codice HTML contiene già 2344 elementi, quindi mi piacerebbe farlo senza aggiungere nulla, e senza raddoppiare il codice JavaScript o il selettore, se possibile.

risposta

14

Invece di legame con l'evento click(), si dovrebbe associare utilizzando l'evento change() , tuttavia, in seguito a tale modifica, il risultato sarà lo stesso:

$('#foo').change(
    function(){ 
     // do whatever 
    }); 

Riferimenti:

+0

Grazie per la risposta completa! – Willy

+0

Prego; Sono contento di essere stato d'aiuto. –

3

L'evento change dovrebbe fuoco per la input se il label o input si fa clic:

$("#foo").change(function() { ... }); 

Esempiohttp://jsfiddle.net/andrewwhitaker/6LMXW/

+0

Grazie per la risposta rapida! – Willy

+0

@Willy: Nessun problema! Felice di aiutare. –

Problemi correlati