2013-08-24 11 views
5

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

+0

możliwe duplikat [jQuery delegacja event] (http://stackoverflow.com/questions/14679432/jquery-event-delegation) –

+0

@EvanTrimboli - to pytanie nie jest dupą tego. Rozwiązanie może być podobne, ale pytanie nie jest takie samo. – jfriend00

+0

Czy naprawdę potrzebna jest inna odpowiedź wyjaśniająca, w jaki sposób działa delegowanie wydarzeń? –

Odpowiedz

9

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?

+0

Oto link wyjaśniający, co powiedział jfriend00: http://api.jquery.com/on/ – Jonathan

Powiązane problemy