2012-02-08 19 views
13

Używam etykiet dla mojej postaci, na przykład:Bind JavaScript jQuery kliknij zdarzenie na etykiecie oraz wyboru jednocześnie

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

chcę ukryć element, kiedy użytkownik odznacz pole i pokazać je inaczej .

Problem polega na tym, że jeśli wiążę zdarzenie kliknięcia z "foo", będzie działać tylko wtedy, gdy użytkownik kliknie na pole wyboru, a nie na etykiecie. Czy muszę też powiązać zdarzenie kliknięcia na etykiecie? Czy powinienem zamknąć oba elementy w obrębie przęsła? Mój HTML zawiera już 2344 elementy, więc chciałbym to zrobić bez dodawania niczego i bez podwojenia kodu JavaScript lub selektora, jeśli to możliwe.

Odpowiedz

14

Zamiast wiązania ze zdarzeniem click() należy wiązać z wykorzystaniem zdarzenia change() , ale jednak ta zmiana jest wyzwalana, wynik będzie taki sam:

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

Odniesienia:

+0

Dzięki za kompletną odpowiedź! – Willy

+0

Nie ma za co; Cieszę się, że mogłem pomóc. –

3

Impreza change powinien ogień dla input stwierdzi, czy label lub input kliknięciu:

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

Przykładhttp://jsfiddle.net/andrewwhitaker/6LMXW/

+0

Dzięki za szybką odpowiedź! – Willy

+0

@Willy: Nie ma problemu! Miło, że mogłem pomóc. –

Powiązane problemy