click-Ereignis ausgelöst wird zweimal jquery
Habe ich die folgende vereinfachte html:
<div class="foo" style="width:200px; height:200px;">
<input type="checkbox" />
</div>
<script type="text/javascript">
$('.foo').click(function(){$(this).find('input:checkbox')[0].click();});
</script>
Klick auf die 200x200 div 'foo' funktioniert gut, und löst das click-Ereignis für das Kontrollkästchen drin.
Allerdings, wenn ich genau klicken Sie auf die checkbox selbst, es feuert die "normalen" Veranstaltung plus die jquery gebunden Veranstaltung über, die Bedeutung der checkbox prüft selbst, dann deaktiviert sich wieder.
Ist es eine gute Möglichkeit, dies zu verhindern?
- Es sieht okay aus im IE und nicht im FF.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Veranstaltungen Blase. Würden Sie brauchen, testen Sie die
e.target
, auf die geklickt wurde.Und wenn Sie nur versuchen zu aktivieren/deaktivieren Sie die box, dann sollten Sie seine
checked
Eigenschaft.EDIT: Gefixt ein paar Fehler.
Arbeiten demo: http://jsfiddle.net/LhSG9/
false
formbind
.false
auch nicht einpreventDefault
. :o(Wie wäre es damit: statt mit einem div, verwenden Sie eine
<label>
. Es ist mehr semantisch korrekt ist, tut genau das, was Sie wollen, und benötigt kein JavaScript.Beispiel hier: http://jsfiddle.net/LhSG9/1/
Sie anhalten müssen, klicken Sie auf die checkbox, damit es nicht Blase bis zu den div.
Es geschieht, weil, wenn Sie klicken Sie auf das Kontrollkästchen, sind Sie auch bei Klick auf das div, da die checkbox ist drin. Also, was Sie tun sollten, ist zu erfassen, wenn der Benutzer auf die im div aber nicht das Ankreuzfeld. Wenn der Benutzer klicken Sie auf die checkbox handeln wird mit seinem default-Verhalten aktivieren/deaktivieren
gehören die folgenden Funktion in yiur
$(document).ready function
-geben Sie eine id sagen test, um Ihre checkbox-dann -