2012-04-03 11 views
8

Ich habe 2 separate Skripte, die im Wesentlichen die gleiche Sache tun. Ich habe sie im Laufe der Zeit gebaut und herausgefunden, dass ich ein paar verschiedene Mittel verwende, um zum selben Ergebnis zu kommen.Was ist der beste Weg, um jQuery .change()

Ich möchte die Best Practices-Methode in beiden Fällen standardisieren und verwenden.

Ein Weg, ich ein Änderungsereignis testen, ist dies:

$('input[name="status"]').change(function() {}); 

Ein anderer Weg, teste ich ein Änderungsereignis ist dies:

$("#email").bind("change", function(e) {}); 

Welcher Weg ist am besten? Was ist der Unterschied zwischen den 2?

Danke, dass Sie mir geholfen haben, dies zu verstehen.

Antwort

16

Vor jQuery 1.7, change() war simply a short cut für bind("change").

Ab 1.7 wurde jedoch on() eingeführt und wird bevorzugt zu bind(). Das bedeutet jetzt change() ist eine Abkürzung für on("change"), und tatsächlich werden alle bind() Anrufe jetzt on() intern aufrufen.

Kurz gesagt, sie tun das Gleiche. Ich finde die explizite Verwendung von on() (oder bind()) vorzuziehen, aber solange Sie in Ihrer Codebasis konsistent sind, sehe ich keine wirklichen Unterschiede.

Man könnte argumentieren, dass in dem Wort „Veränderung“ in der ersten Instanz würde werfen („undefiniert ist keine Funktion“) einen Parse-Fehler change() über on("change") „besser“ ist, als Tippfehler verwenden, würde aber nicht lautlos mit on() ... aber offensichtlich würden Ihre Unit-Tests das fangen, oder? ;).

+0

Verstanden ... danke @Matt! –

+0

Also @Matt, meine Codesyntax muss so aussehen: $ ("# email"). On ("change", function (e) {}); '? –

+1

@ Dr.DOT: Ja ..! – Matt