Klick-Ereignis wird zweimal ausgelöst - jquery

7

Ich habe den folgenden vereinfachten html:

%Vor%

Das Klicken auf das 200x200 div 'foo' funktioniert gut und löst das click -Ereignis für das Kontrollkästchen darin aus.

Wenn ich jedoch genau auf das Kontrollkästchen klicke, feuert es sein "normales" Ereignis, plus das oben erwähnte jquery-gebundene Ereignis, was bedeutet, dass das Kontrollkästchen sich selbst überprüft und sich dann selbst abmeldet.

Gibt es einen ordentlichen Weg, dies zu verhindern?

    
maxp 10.01.2011, 17:43
quelle

5 Antworten

12

Ereignisse bubble. Sie müssten den e.target , auf den geklickt wurde, testen.

Und wenn Sie nur versuchen, das Kontrollkästchen zu aktivieren / deaktivieren, sollten Sie seine Eigenschaft checked festlegen.

%Vor%

BEARBEITEN: Einige Fehler wurden behoben.

Arbeitsdemo: Ссылка

    
user113716 10.01.2011, 17:49
quelle
13

Wie wäre es damit: Anstatt ein div zu verwenden, verwenden Sie <label> . Es ist semantisch korrekter, macht genau das, was Sie wollen und benötigt kein JavaScript.

Arbeitsbeispiel hier: Ссылка

    
Phrogz 10.01.2011 18:45
quelle
10

Sie müssen den Klick auf das Kontrollkästchen stoppen, damit es nicht zum Div aufbläht.

%Vor%     
Josiah Ruddell 10.01.2011 17:46
quelle
2

Es passiert, weil, wenn Sie auf das Kontrollkästchen klicken Sie auch auf das div klicken, weil das Kontrollkästchen darin ist. Also, was Sie tun sollten, ist zu erfassen, wenn der Benutzer das Innere der div aber das Kontrollkästchen nicht klickt. Wenn der Benutzer auf das Kontrollkästchen klickt, verhält er sich mit seinem Standardverhalten, indem er das Kontrollkästchen

aktiviert / deaktiviert %Vor%     
amosrivera 10.01.2011 18:00
quelle
1

enthält die folgende Funktion in yiur $(document).ready function -

Geben Sie Ihrer Checkbox einen id say test -

%Vor%     
Alpesh 10.01.2011 17:48
quelle

Tags und Links