2010-12-13 2 views
3

Ein bisschen schwer zu erklären, so habe ich eine jsFiddle here eingerichtet.jQuery/Javascript verschiedene Verhaltensweisen mit dem Benutzer klicken und programmgesteuert auf ein Kontrollkästchen

Grundsätzlich habe ich ein Verhalten ausgelöst, wenn ein Benutzer auf ein Kontrollkästchen klickt. An einer anderen Stelle versuche ich, das Kontrollkästchen programmatisch zu aktivieren, und ich muss genau dasselbe Verhalten sehen. Es funktioniert nicht, scheinbar etwas mit der Reihenfolge des Klicks zu tun und das geprüfte Attribut zu bestimmen.

Wie kann ich das gewünschte Verhalten erzielen, ohne auf einen Hack zurückgreifen zu müssen?

Antwort

2

Ich neige dazu, hier change Handler stattdessen zu verwenden (da jQuery das Verhalten normalisiert, macht es keinen blur erfordern), dann Feuer, das Ereignis wie folgt aus:

$('span').click(function() { $('.test').click().change(); }); 

Dann sind Sie explizit über die Reihenfolge ... und Sie haben nicht das Problem der nativen Aktion vs Event-Handler-Reihenfolge, you can test it out here.

+0

brilliant! Danke :) – fearofawhackplanet

1

Sie müssen Javascript nicht für dieses Verhalten setzen ... benutzen Sie einfach diesen HTML-Syntax:

<input type="checkbox" id="myid" />&nbsp;<label for="myid">My Label</label> 

Wenn Sie Javascript listners hinzufügen möchten, können Sie ändern, um Eingabefeld hinzufügen können, oder klicken Sie auf.

:)

oder Sie sollten das tun jquery mit:

$('span').click(function() { $('.test').trigger('click'); }); 
+0

Dies funktioniert für das Beispiel, aber nicht die allgemeine Frage, die programmatisch war das Klicken der Checkbox :) –

+0

diese Zeile tun den Trick $ ('span'). click (function() {$ ('. test') .trigger ('click');}); –

0

Ich hatte das gleiche Problem und reparierte es die JavaScript-Klick-Funktion anstelle von jQuery ein wie folgt Aufruf:

$('.test')[0].click(); 
Verwandte Themen