Здравствуйте. Делаю загрузку картинок по мере прокрутки страницы вних. Так вот, в начале у меня сервер отдаёт 3 блока с катринками, которые работают нормально ($('.feed_img_wrapper').click (function () {...}), Далее, при прокрутке страницы вниз, грузится ещё несколько абсолютно аналогичных блоков, но при попытке обработать такое же событие с ними - ничего не происходит. Я подозреваю что это потому, что обработка событий находится в блоке $(document).ready, и по этому работает только с теми, которые были загружены при загрузке страницы. Но как тогда обработать те, которые загружены ajax-ом? Если надо - могу приложить файлы, но они большыеи там всё перемешано, так что сложно будет что-либо понять.
Ну где-то должна же быть жилка программерская, ну? Нет единого решения. У тебя есть инструменты. Как ты их будешь использовать - такой результат и будет получаться. Когда предо мной стоит подобная задача, я делаю метод навешивания событий и вызываю его 1) при загрузке страницы и 2) после добавления новых элементов. При этом естественно я использую некоторый кэш, который позволяет не обрабатывать элементы, которые уже были обработаны. В самом простом виде это может быть какой-нибудь атрибут или класс.
Вот. Это тоже какое-то событие? Или прописать ф-цию в тело success ajax'a?? --- Добавлено --- А, я, по ходу, понял. Надо на родителя повесить, и проходить по дочерним эллементам?
Недавно столкнулся с подобным и нагуглил ответ Айяйяй, @SamyRed --- Добавлено --- Код (Javascript): $('#Result').on('click', '.selector', function(){ // бла бла бла }); // #Result - родительский блок, загруженный изначально. .selector - подгруженный ajax-ом элемент
Получилось как-то так. Только тапками не закидайте. Код (Javascript): $('#feed').on ('click', '.feed_img_wrapper', (function () { window.elem = $( this ).parent ().children ('.feed_photo_footer').children ('i'); var photoId = $(this).data ('photo-id'); $.ajax({ url: './service/like.php', type: "GET", data: {'photoId': photoId}, success: function (data){ if (data == 'liked') { window.elem.removeClass ('unliked'); window.elem.addClass ('liked'); } else if (data == 'unliked') { window.elem.removeClass ('liked'); window.elem.addClass ('unliked'); } else if (data === false) { alert ('DB error'); } else if (data == 'no auth') { } else { alert (data); } } }); }));