Mam kilka dynamicznie generowanych elementów HTML, których każda korzysta z własnego identyfikatora dynamicznego jako nazwa klasy. Mam słuchaczy zdarzeń dołączonych do tych elementów takich jak:

$(document).on("click", ".id_" + dynamic_id , clickCallback);

Problemem jest Identyfikator dynamiczny może zmienić za pomocą połączenia z sukcesem AJAX, a odpowiedni element HTML jest aktualizowany jak więc:

$(".id_" + old_dynamic_id).attr("class", new_dynamic_id);

Ta zmiana spowoduje utracę wcześniej podłączony słuchacz zdarzenia, ponieważ nie wie, że element HTML ma teraz nowy identyfikator, który został przypisany.

Co byłby czysty sposobem obsługi tego? Mogę ponownie przymocować słuchacze zdarzeń w funkcji Sukcesu AJAX, ale nie jest to idealne, ponieważ pojawi się dwa miejsca, w których żyje ten sam kod słuchacza: podczas tworzenia elementu i wewnątrz funkcji sukcesu AJAX.

0
user21398 24 listopad 2013, 11:46

2 odpowiedzi

Najlepsza odpowiedź

To wydaje się działać:

$(".link").on("click", function() {
    alert("yes");
});
$(".link").attr("class", "new-class");

To znaczy. Jeśli zdarzenie jest przymocowane bezpośrednio do elementu.

http://jsfiddle.net/5ru2w/

0
Krasimir 24 listopad 2013, 07:54

Możesz spróbować tego:

$(document).on("click", "[class^='id_']", clickCallback);
1
Khanh TO 24 listopad 2013, 08:15