Nie rozumiem, dlaczego istnieje taka metoda ....jQuery 1.7 .on() metoda, dlaczego jest to konieczne?
Wydaje mi się, że zawsze tak zrobić $(el).click()
zamiast $(el).on('click', function...
Nie rozumiem, dlaczego istnieje taka metoda ....jQuery 1.7 .on() metoda, dlaczego jest to konieczne?
Wydaje mi się, że zawsze tak zrobić $(el).click()
zamiast $(el).on('click', function...
$(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ść.
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ń.
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)
dzwoni dzwonek ... – roselan
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ę.
$(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().
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
Oczywiście, ale nie za pomocą '.click()', który został specjalnie wymieniony! – JJJ
Ah, to prawda – JAAulde