Wpis z mikrobloga

#jquery #js

Czołem Mirki, będzie ktoś uprzejmy zerknąć bo mnie krew zaleje.
Mam div rightarea gdzie ładuje dynamicznie zawartość. W niektórych przypadkach są to obiekty o klasie 'drinker'.
Po ich załadowaniu chcę przypisać zdarzenie kliknięcia jak niżej, ale mimo wywołania się funkcji after
loaddataarea() zdarzenie nie działa. Kiedy natomiast statecznie elementy znajdą się na stronie i wywołam w/w funkcję wszystko jest ok...

function after_load_data_area() {
$(".drinker").click(function () {
event.preventDefault();
$("#edit_window").text("Loading ...");
$("#edit_window").dialog({
resizable: false,
height: 600,
width: 600,
modal: true,
buttons: {
"Zapisz": function () {
$(this).dialog("close");
},
"Anuluj": function () {
$(this).dialog("close");
}
}
});
});
}

function reload_data_area() {
if (data_url.length > 1) {
$("#right_area").fadeOut(200);
$("#right_area").load('[http://saveoctagon.com/'](http://saveoctagon.com/') + data_url + '&ajax=ON', function (response, status, xhr) {

if (status === "success") {
$("#right_area").fadeIn(200);
after_load_data_area();
}

if (status === "error") {
$.notiny({text: 'Błąd połączenia!'});
}

});
document.location.hash = data_url;
}
}
  • 3
zamiast $('.drinker').click(function(){ ... }) daj $(document).on('click', '.drinker', function(){ ... }); , zapewne przypisujesz event przed tym jak masz elementy o klasie .drinker w domie wiec po pobraniu i wstawieniu nie reaguja na klik

edit: chociaz jak patrze teraz to niby wywolujesz to afterloaddata_area(); za kazdym razem po pobraniu, jestes pewien ze status === "success" jest spelniane? sprawdzales konsole? mozesz na priv podeslac url to spojrze na calosc