Odpowiedzi jest wiele, z których każda dotyka kilku punktów - miejmy nadzieję, że da ci to odpowiedź, z dobrym wyjaśnieniem, co jest czym i jak z niej korzystać.
Używanie click()jest aliasem do bind('click' ...). Użycie bind()przyjmuje DOM w takiej postaci, w jakiej jest on konfigurowany, i wiąże funkcję z każdym pasującym elementem DOM. Oznacza to, że jeśli użyjesz $('a').click(...), powiążesz funkcję dostarczoną ze zdarzeniem click każdego znacznika kotwicy w DOM znalezionym po uruchomieniu tego kodu.
Używanie live()było starym sposobem w jQuery; był używany do wiązania zdarzeń tak samo jak bind()robi, ale nie tylko wiąże je z elementami DOM, gdy kod jest uruchamiany, ale także nasłuchuje zmian w DOM i wiąże zdarzenia z dowolnymi przyszłymi dopasowanymi elementami. Jest to przydatne, jeśli wykonujesz manipulację DOM i chcesz, aby zdarzenie istniało na niektórych elementach, które mogą zostać później usunięte / zaktualizowane / dodane do DOM, ale nie istnieją podczas pierwszego ładowania DOM.
Powodem, który live()jest teraz amortyzowany, jest to, że został źle wdrożony. Aby z niego skorzystać live(), musiałeś być w stanie wybrać przynajmniej jeden element w DOM na początku (jak sądzę). Spowodowało to również, że kopia funkcji została uruchomiona, aby była powiązana z każdym elementem - a jeśli masz 1000 elementów, to jest dużo skopiowanych funkcji.
Stworzenie on()funkcji miało przezwyciężyć te problemy. Pozwala powiązać pojedynczy detektor zdarzeń z obiektem, który nie zmieni się w DOM (więc nie możesz użyć on()na elemencie, który zostanie później usunięty / dodany do DOM - powiąż go z obiektem nadrzędnym) i po prostu zastosuj element „filter”, dzięki czemu funkcja jest uruchamiana tylko wtedy, gdy zostanie przekazana do elementu pasującego do selektora. Oznacza to, że masz tylko jedną funkcję, która istnieje (nie kilka kopii) powiązaną z jednym elementem - znacznie lepsze podejście do dodawania wydarzeń „na żywo” w DOM.
... i na tym właśnie polegają różnice i dlaczego każda funkcja istnieje i dlaczego live()jest amortyzowana.
ondoclickponieważclickjako dźwięków nazwa funkcji jak czasownik, działanie, kiedy to, co robi jest nie do kliknięcia elementu (jak można to zrobić również z tej samejclickfunkcji)