2012-04-03 27 views
8

Mam 2 oddzielne skrypty, które zasadniczo zrobić to samo. Zbudowałem je z biegiem czasu i odkryłem, że używam kilku różnych sposobów, aby osiągnąć ten sam rezultat.Jaki jest najlepszy sposób wykonywania jQuery .change()

Chcę ujednolicić i zastosować metodę najlepszych praktyk w obu przypadkach.

Jeden sposób przetestować zdarzenia zmiany to:

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

Innym sposobem ja testuje zdarzenia zmiany to:

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

Który sposób jest najlepszy? Jaka jest różnica między 2?

Dzięki za pomoc w zrozumieniu tego.

Odpowiedz

16

Przed wersją jQuery 1.7, change() była simply a short cut dla bind("change").

Od dnia 1.7 jednak wprowadzono on() i jest ono preferowane w stosunku do bind(). To oznacza teraz, że change() jest skrótem do on("change"), a wszystkie połączenia bind() będą teraz wywoływać wewnętrznie.

Krótko mówiąc, robią to samo. Uważam, że preferowane jest jednoznaczne użycie on() (lub bind()), ale tak długo, jak jesteś konsekwentny w całej bazie kodu, nie widzę żadnych rzeczywistych różnic.

Można by argumentować, że przy użyciu change() nad on("change") jest „lepszy”, jako literówka w słowie „zmiany” rzucał błąd składniowy w pierwszej instancji („niezdefiniowany nie jest funkcją”), ale nie powiedzie się po cichu z on() ... ale oczywiście twoje testy jednostkowe złapią to, prawda? ;).

+0

Mam to ... dzięki @Matt! –

+0

Tak więc @Matt, moja składnia kodu musi wyglądać tak: '$ (" # email "). On (" change ", function (e) {});'? –

+1

@ Dr.DOT: Tak ..! – Matt

Powiązane problemy