С помощью Ajax и обработчика подгружаю контент из базы в блок , проблема в том, что не работает Jquery для всего, что находится в блоке. Как исправить?
Для динамически добавленных элементов, нужно использовать делегированную обработку событий. В древних версиях использовался метод .live(), о котором нужно забыть, а в актуальных версиях - есть метод .on(). Это метод применяется не к тому элементу, на котором вы ожидаете событие, а к его родительскому статичному элементу. Синтаксис: Код (PHP): $('parent_static_element').on('event', 'dinamic_element', function(){ }); Желательно подбирать ближайщий родительский элемент, но можно в качестве такого использовать и 'body', и document
мне нужно у подгружаемых картинок сменить src Код (Text): $(".text img").each(function(){ $(this).attr("src","http://domain.ru"+$(this).attr("src")); }); как это без кликов с помощью on('event') сделать?
Пробуйте делать это в callback-функции ajax-запроса. Код (PHP): $('#content').load('content.php', function(){ $(".text img").each(function(){ $(this).attr("src","http://domain.ru"+$(this).attr("src")); }); });
Я делал так, почему то на подгружаемой странице работает, а на основной перестает работать.. а если несколько раз подгружать, то заработает на последнем подгружаемом контенте Добавлено спустя 22 минуты 5 секунд: ошибка.. если постоянно подгружать в callback, то к src будет присваиваться http://domain.ruhttp://domain.ruhttp://domain.ruhttp://doma ... /domain.ru.
Вынесите код замены src в отдельную функцию, которую будете вызывать и после загрузки страницы, и после ajax-запросов: Код (PHP): function changeSrc(){ $(".text img").each(function(){ $(this).attr("src","http://domain.ru"+$(this).attr("src")); }); } $(function(){ // после загрузки DOM changeSrc(); // после ajax-запроса $('#content').load('content.php', changeSrc); }); Добавлено спустя 1 минуту 1 секунду: В каком виде приходят данные в ответе?
Спасибо за ответы, я разобрался. http://domain.ru"+$(this).attr("src") сам себя копировал при каждой подгрузке. Регуляркой решил задачу