Javascript: Klicken auf ein Wrapper-Element, aber kein untergeordnetes Element

8

Ich schreibe etwas javascript (jQuery), das ein div um ein checkbox herum aktiviert, wenn es angeklickt wird, schaltet das checkbox Element um. Das Problem, auf das ich stoße, ist jedoch, dass es nicht funktioniert, wenn man auf das Kontrollkästchen klickt, weil es zweimal umgeschaltet wird (zumindest denke ich, dass das passiert).

Hier ist eine Demo.

Hier ist der Code:

%Vor%

Wie kann ich es so einrichten, dass das Anklicken des Kontrollkästchens wie gewohnt funktioniert, aber wenn Sie in den umgebenden Bereich klicken, wechselt das Kontrollkästchen?

Lösung:

Danke an jAndy's Kommentar, um zu zeigen, wie das geht, indem man die event.target -Eigenschaft überprüft:

%Vor%

Und wie andere darauf hingewiesen haben, ist dies vielleicht nicht das beste Beispiel, da Sie die gleiche Funktionalität erhalten (ohne Javascript zu benötigen), indem Sie das Kontrollkästchen mit einem Label-Tag anstelle eines div-Tags umhüllen. Demo

    
Andrew 03.08.2011, 17:32
quelle

4 Antworten

5

Überprüfen Sie die Eigenschaft event.target .

  

Die Eigenschaft target kann das Element sein, das für das Ereignis registriert wurde, oder ein Nachkomme davon. Es ist oft nützlich, event.target mit this zu vergleichen, um festzustellen, ob das Ereignis aufgrund von Ereignisblasen behandelt wird.

    
Matt Ball 03.08.2011, 17:34
quelle
2

Versuchen Sie es

%Vor%     
ShankarSangoli 03.08.2011 17:37
quelle
1

Versuchen Sie, nur ein <label> darum zu legen.

    
Justin Long 03.08.2011 17:58
quelle
0

Es hört sich so an, als ob Sie das Ereignis nicht bis zu den übergeordneten Elementen aufgehalten haben

Wie Sie das Bubbling von Ereignissen bei Checkbox-Klicks stoppen

    
Antony Scott 03.08.2011 17:39
quelle

Tags und Links