За последние 24 часа нас посетили 18708 программистов и 1594 робота. Сейчас ищут 1869 программистов ...

Не работает Jquery в подгружаемом контенте

Тема в разделе "JavaScript и AJAX", создана пользователем rustoke, 12 сен 2015.

  1. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    С помощью Ajax и обработчика подгружаю контент из базы в блок , проблема в том, что не работает Jquery для всего, что находится в блоке. Как исправить?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Мало информации, делай отладку
     
  3. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    Код (Text):
    1.  
    2. $('#content').load('content.php');
    jqury не срабатывает в подгруженном контенте
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Для динамически добавленных элементов, нужно использовать делегированную обработку событий. В древних версиях использовался метод .live(), о котором нужно забыть, а в актуальных версиях - есть метод .on(). Это метод применяется не к тому элементу, на котором вы ожидаете событие, а к его родительскому статичному элементу. Синтаксис:
    Код (PHP):
    1. $('parent_static_element').on('event', 'dinamic_element', function(){
    2.  
    3. });
    Желательно подбирать ближайщий родительский элемент, но можно в качестве такого использовать и 'body', и document
     
  5. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    мне нужно у подгружаемых картинок сменить src
    Код (Text):
    1.  
    2. $(".text img").each(function(){
    3. $(this).attr("src","http://domain.ru"+$(this).attr("src"));
    4. });
    как это без кликов с помощью on('event') сделать?
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Пробуйте делать это в callback-функции ajax-запроса.
    Код (PHP):
    1. $('#content').load('content.php', function(){
    2.      $(".text img").each(function(){
    3.         $(this).attr("src","http://domain.ru"+$(this).attr("src"));
    4.     });
    5. });
     
  7. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    Я делал так, почему то на подгружаемой странице работает, а на основной перестает работать.. а если несколько раз подгружать, то заработает на последнем подгружаемом контенте

    Добавлено спустя 22 минуты 5 секунд:
    ошибка.. если постоянно подгружать в callback, то к src будет присваиваться http://domain.ruhttp://domain.ruhttp://domain.ruhttp://doma ... /domain.ru.
     
  8. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Вынесите код замены src в отдельную функцию, которую будете вызывать и после загрузки страницы, и после ajax-запросов:
    Код (PHP):
    1. function changeSrc(){
    2.     $(".text img").each(function(){
    3.         $(this).attr("src","http://domain.ru"+$(this).attr("src"));
    4.     });
    5. }
    6. $(function(){
    7.     // после загрузки DOM
    8.     changeSrc();
    9.     // после ajax-запроса
    10.     $('#content').load('content.php', changeSrc);
    11. });
    Добавлено спустя 1 минуту 1 секунду:
    В каком виде приходят данные в ответе?
     
  9. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    Спасибо за ответы, я разобрался. http://domain.ru"+$(this).attr("src") сам себя копировал при каждой подгрузке. Регуляркой решил задачу