2011-11-03 8 views

Odpowiedz

4

$(el).on daje programistom ujednolicony sposób wiązania zdarzeń dla dowolnych typów zdarzeń, wydarzeń bezpośrednich i delegowanych. Umożliwia również wiązanie więcej niż jednego zdarzenia w tym samym czasie, przekazując obiekt (drugi przykład w postaci documentation)Możesz również zapisać kilka naciśnięć klawiszy, aby uzyskać wartość.

2

Z .on() można powiązać więcej niż jeden typ zdarzenia w tym samym czasie, więc nie musisz duplikować kodu ani tworzyć oddzielnej funkcji, jeśli chcesz robić to samo podczas wielu wydarzeń.

+0

Można powiązać jedną funkcję z więcej niż jednym typem zdarzenia z innymi funkcjami. Jest to ujednolicenie obsługi zdarzeń, a także umożliwia przypisanie więcej niż jednej funkcji do więcej niż jednego zdarzenia poprzez mapowanie. – JAAulde

+0

Oczywiście, ale nie za pomocą '.click()', który został specjalnie wymieniony! – JJJ

+0

Ah, to prawda – JAAulde

0

Wygląda na to, że jest wystawiany na łączenie/zastępowanie różnych innych funkcji wiążących zdarzenia ... Jedna funkcja do związywania ich wszystkich! (LOTR geekery ftw)

+0

dzwoni dzwonek ... – roselan

1

To moja zrozumienie, że nowy .on() jest łączenie nieco duplikatu funkcjonalności w .bind(), .delegate() i .live(). Jest to zarówno połączenie API, jak i połączenie implementacji w bardziej ujednoliconą implementację.

2

$(el).click(...) jest skrótem dla $(el).bind('click', ...). Jeśli porównasz documentation for bind() z documentation for on(), zobaczysz wiele różnic.

to całkiem dobrze podsumowane przez pierwszego akapitu bind() docs:

Jak jQuery 1.7, metoda .on() jest preferowaną metodą dołączenie obsługi zdarzeń do dokumentu. W przypadku wcześniejszych wersji metoda .bind() służy do dołączania modułu obsługi zdarzeń bezpośrednio do elementów . Handlery są dołączane do aktualnie wybranych elementów w obiekcie jQuery, więc elementy te muszą istnieć w punkcie, w którym następuje wywołanie do .bind(). Aby uzyskać bardziej elastyczne wiązanie zdarzeń, zobacz dyskusję na temat delegowania zdarzeń w .on() lub .delegate().

Powiązane problemy