2008-12-11 12 views
12

Wenn ich jQuery (Ausdruck) .change (Funktion), dann kann ich eine Ereignisfunktion ausgelöst werden, wenn der Benutzer eine Änderung an den Wert.JQuery erkennen Programmatic Change Ereignis

Ist es möglich, dies zu feuern, wenn es programmatisch geändert wird, dh wenn ich jQuery (expr) .val ("moo") aufruft.

oder wenn etwas einfaches altes JavaScript seinen Wert ändert?

Danke für jede Hilfe.

Antwort

15

Nachdem Sie den Wert geändert haben, können Sie das Ereignis selbst auslösen und somit alle 'onchange'-Handler aufrufen.

jQuery('#element').change(); 
+0

Perfekt! Genau das, was ich gesucht habe. – neminem

5

Wenn Sie den Wert direkt in JS ändern, wird nichts angehängt, auf das jQuery warten kann, um das Änderungsereignis auszulösen. Wie Sander sagt, können Sie den Event-Handler selbst auslösen. Wenn Sie keine Kontrolle über anderen Code haben, der diese Werte verändert, und das ist keine Option, haben Sie etwas Pech. Die einzige andere Option, die funktionieren könnte, wäre, dass ein Beobachter den Wert eines Intervalls mit setTimeout sieht, was wirklich chaotisch und wahrscheinlich keine gute Idee ist.

+0

Immer noch ist es manchmal die einzige Option. Ich stimme zu, es ist chaotisch, aber es sollte keine Probleme verursachen, solange Sie ein großes Intervall wählen (500 ms ist ok in meiner Erfahrung). –

1

jQuery v1 + unterstützt das programmgesteuerte Auslösen von Handlern - Ich habe diese Methode im Gegensatz zur .change() -Methode verwendet, da sie bei Bedarf mehrere andere Handler auslösen kann (z. B. einige benutzerdefinierte Handler). API Documentation ist unter: http://api.jquery.com/trigger/