2013-05-12 1 views
3

У меня есть страница с несколькими продуктами, если вы выбрали php для этого продукта, загружаемого в div, заменяющего несколько продуктов - я использую плагин fancybox для галереи изображений выбранного продукта , когда я выбираю продукт и нажимаю на любое из изображений, он безупречно показывает галерею fancybox. но когда я вернуться назад и выбрать второй продукт он просто не открывается ...fancybox2 не работает во втором вызове ajax

PageMap является следующим образом- страницу продуктов содержит 2 (названный type1 и type2) кнопки и 1 (динамический дел) на продукты страница загружается type1.php на загрузку

кнопки с помощью следующей Аякса

$('div#type1_link').on('click',function() {   
     $('div#ajax_div').html("<img src='ajax-load.gif' />").load("type1.php?carmodel=" + $for_url); 
     }); 

я использую FancyBox как

$(".fancybox").fancybox();//for initialisation 

<a class="fancybox" rel="group" href="images/<?php echo $row2['img1'] ?>"> 
    <img src="images/thumbs/<?php echo $row2['img1'] ?>"></a></li>//on images 

, пожалуйста, расскажите, как я могу исправить эту проблему. с использованием последних версий fancybox и jquery

+0

также при проверке я заметил, что на втором АЯКС вызова следующий DIV действительно добавляются в DOM '

' хотя не показывает FancyBox – user1817626

+0

также во время второго вызова - когда я нажимаю изображение в первый раз - указатель изменяется на стрелку на всю страницу, что указывает на то, что fancybox загружается, но не появляется. также я могу открывать фантазию столько раз на той же странице .. – user1817626

+0

Можете ли вы показать нам, что такое данные о нагрузке? –

ответ

0

Из того, что, как я понимаю, вы используете ajax для вывода вашего контента после первого запроса fancybox, что означает, что ваши команды jquery становятся неактуальными для динамического содержимого.

Для того, чтобы их отношение вы должны использовать «прослушивание» метод, который будет отвечать на ваши, чтобы динамическое содержимое действий:

Предположив ваш Jquery выше 1.7, вы должны использовать on() метод с вашим FancyBox. должно быть примерно так:

$(".fancybox").on("click", function(){ 
    $(this).fancybox(); 
}); 

Есть более приятные способы сделать это, но это должно работать.

+0

'Ваши команды jquery становятся неактуальными для динамического содержимого' Не верно, fancybox 2 поддерживает динамически добавленный контент. Кроме того, ваш код '.on()' click не запускает fancybox, привязывает fancybox к селектору http://jsfiddle.net/TRkVJ/ – JFK

0
  1. Сначала создайте универсальную контейнерную упаковку для вашего продукта и обертки.
  2. Назовите это нечто уникальное, как «product-container- {id}», заменив {id} на пользовательское числовое уникальное значение
  3. при загрузке нового продукта через ajax вместо замены проверки содержимого, если «#product -container- {request-id} "существует
  4. Если он существует, скройте каждый элемент" product-container- {id} "и покажите запрошенный элемент" # product-container- {request-id} " если он не существует, создайте новый контейнер «# product-container- {request-id}» и инициируйте jQuery fancybox в этой папке следующим образом: $ ("# product-container- {request-id} .fancybox"). fancybox() ;
  5. теперь вы должны иметь небольшой кэш АЯКС для уже загруженных элементов в рамках сессии, не нарушая функциональность
+0

С fancybox v2.x вам не нужно запускать fancybox, но с тех пор эта версия работает с существующими или динамически добавленными элементами. См. Этот ответ от автора плагина http://stackoverflow.com/a/11101122/1055987 – JFK

+0

извините, но я не использовал fancybox с v1.x, поэтому я не знал: D – vortex

0

Так от того, что я понял ваши фантазии окно не работает после того, как второй элемент, который вставлен в DIV. Для этого вам необходимо повторно инициализировать facncybox для этих элементов.

О функции успеха вы должны переинициализировать facncybox как этого

$('div#type1_link').on('click',function() {   
    $('div#ajax_div').html("<img src='ajax-load.gif' />").load("type1.php?carmodel=" + $for_url,function(){ 
     $(".fancybox").fancybox();//This initialized for dynamic content 
    }); 
}); 

Вы должны также проверить, что динамическое содержимое также имеет те правильные атрибуты фантазии поля и необходимую инициализацию для различных типов связывания JQuery.

+0

С fancybox v2.x вы не знаете, t нужно инициировать fancybox, но один раз, поскольку эта версия работает с существующими или динамически добавленными элементами. См. Этот ответ от автора плагина http://stackoverflow.com/a/11101122/1055987 – JFK