Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.07.2012, 11:53
Новичок на форуме
Отправить личное сообщение для pylyp Посмотреть профиль Найти все сообщения от pylyp
 
Регистрация: 23.05.2012
Сообщений: 7

lightbox и xmlhttp
Есть галлерея картинок. К каждой картинке подключен lightbox по rel="lightbox". Т.е. при нажатии на превью открывается увеличенное изображение.

Галерея динамическая, по запросу посетителя сайта подгружаются новые картинки.
Обработчик такой:

function showPics(picsGroup_id)
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("pics_group").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","pics_insert.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("pics="+picsGroup_id);
}


Соответственно, pics_insert.php генерит нужный HTML для вставки.

Все прекрасно работает, но все, что сгенерировано динамически, не открывается через lightbox. Код, вставляемый через pics_insert.php - корректный, проверял.

В чем может быть причина?
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2012, 12:04
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

pylyp,
Может стоит поменять lightbox - достаточно глючный плагин, пользуюсь этим => http://studioad.ru/index/0-8
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2012, 12:13
Новичок на форуме
Отправить личное сообщение для pylyp Посмотреть профиль Найти все сообщения от pylyp
 
Регистрация: 23.05.2012
Сообщений: 7

Мне кажется, что тут проблема не столько в lightbox, сколько в том, что скрипт работает только с первоначально генерированным DOM. Судя по rel="iLoad" у ILOAD то же самое.

Обойти можно будет, но интересно найти решение этой проблемы
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2012, 12:36
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от pylyp
Мне кажется, что тут проблема не столько в lightbox, сколько в том, что скрипт работает только с первоначально генерированным DOM. Судя по rel="iLoad" у ILOAD то же самое
у ILOAD есть АPI и принудительная новая переинициализация
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2012, 15:44
Новичок на форуме
Отправить личное сообщение для pylyp Посмотреть профиль Найти все сообщения от pylyp
 
Регистрация: 23.05.2012
Сообщений: 7

Подскажите, пожалуйста, а куда поставить код инициализации после добавления нового контента?

Балуюсь с alert('test!')

Если ставить его в приведенный скрипт или через ; в место где он вызывается, то alert появляется раньше чем отображается новый контент.

Если ставить в конец pics_insert.php в виде
<script type="text/javascript"> alert('test!');</script>
то он не выполняется.
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2012, 16:11
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

pylyp,
не оч понял = вот страница API = http://studioad.ru/index/0-16
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2012, 16:16
Новичок на форуме
Отправить личное сообщение для pylyp Посмотреть профиль Найти все сообщения от pylyp
 
Регистрация: 23.05.2012
Сообщений: 7

Чтобы запустить принудительную переинициализацию после создания нового контента надо вызвать соотв. функцию. Правильно?

В лайтбоксе это выполняется запуском initLightbox().

Так вот я не могу понять куда и как надо поставить вызов принудительной переинициализации после смены контента.
Ответить с цитированием
  #8 (permalink)  
Старый 05.07.2012, 16:26
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от pylyp
Так вот я не могу понять куда и как надо поставить вызов принудительной переинициализации после смены контента.
Наверно после этого

document.getElementById("pics_group").innerHTML=xmlhttp.responseText;
Ответить с цитированием
  #9 (permalink)  
Старый 05.07.2012, 16:31
Новичок на форуме
Отправить личное сообщение для pylyp Посмотреть профиль Найти все сообщения от pylyp
 
Регистрация: 23.05.2012
Сообщений: 7

Сообщение от Deff Посмотреть сообщение
Наверно после этого

document.getElementById("pics_group").innerHTML=xmlhttp.responseText;
Да, точно. Получилось.
Странно, до этого пробовал уже - не срабатывало.

Большое спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема: Jquery - эффект раскрытия LightBox для изображения. woody2 jQuery 0 16.09.2011 00:10
LightBox + ajax = Не работает ((( xmartinesx jQuery 2 11.10.2010 16:32
JQuery Lightbox поверх фреймов ZneP Events/DOM/Window 4 11.08.2010 16:48
перестает работать lightbox после .load(); toha.chan jQuery 1 14.04.2010 16:37
помогите с xmlHttp ошибка в браузерах Юрийййй AJAX и COMET 0 22.07.2008 21:16