Jak dołączyć wszystkie zdarzenia po manipulowaniu domem przy użyciu odpowiedzi ajax. Mam żądanie ajax, które dostaje odpowiedź html, która jest w zasadzie fragmentem html. ten fragment HTML ma wiele przycisków. Chcę odświeżyć dom, aby wcześniej również zadeklarowane i dołączone zdarzenia zostały zastosowane w tym fragmencie. Nie chcę ciągle dodawać każdego zdarzenia dla każdego przycisku za pomocą jquery on(). jak inaczej to zrobić?Dołączanie zdarzeń po manipulacji DOM przy użyciu JQuery ajax
Odpowiedz
Można użyć delegowanej obsługi zdarzeń, która jest ustawiana z wyprzedzeniem i można ją zastosować do nowo dodanych elementów DOM. Przekazane obsługi zdarzeń odbywa się .on()
i zazwyczaj przyjmuje formę:
$("static parent selector").on('click', 'selector for dynamic element', fn);
Nie ma czysty sposób wystarczy uruchomić zdarzenia instalowania kodu ponownie i mieć ona zastosowanie tylko do nowo dodanych elementów DOM. Będziesz musiał umieścić ten kod w funkcji i zakodować go tak, aby nigdy nie dodawał obsługi zdarzeń więcej niż jeden raz, a następnie mógłbyś wywołać tę funkcję ponownie po dodaniu elementów do DOM. Można również ustawić funkcję na argument dla obiektu nadrzędnego i dodawać tylko procedury obsługi zdarzeń w nowo dodanej hierarchii DOM.
Oto kolejny istotny odpowiedź o delegowanego obsługi zdarzeń: Does jQuery.on() work for elements that are added after the event handler is created?
Oto link wyjaśniający, co powiedział jfriend00: http://api.jquery.com/on/ – Jonathan
możliwe duplikat [jQuery delegacja event] (http://stackoverflow.com/questions/14679432/jquery-event-delegation) –
@EvanTrimboli - to pytanie nie jest dupą tego. Rozwiązanie może być podobne, ale pytanie nie jest takie samo. – jfriend00
Czy naprawdę potrzebna jest inna odpowiedź wyjaśniająca, w jaki sposób działa delegowanie wydarzeń? –