Я использую jQuery с Fancybox для создания галереи изображений следующим образом: я показываю пользователю только одно изображение среднего размера, по которому он щелкает (и после этого нажимает ссылки на другие изображения, предварительно загруженные в скрытые <div>
) и получает хорошую галерею изображений.
Мне нужно предварительно загрузить ссылки на изображения, потому что это не статический список, это зависит от первого изображения, на которое нажал пользователь, и таким образом я могу запретить fancybox показывать дублированные изображения.
Вот мой код (немного грязный, потому что я получаю URL-адреса изображений из ruby):
javascript:
$(function() {
$('#car_image').click(function(e) { // generating fancybox gallery containing only large images
// here we should generate fancybox <div id="large_images_gallery_div"> and place this div inside of <div id="car_image">
var gallery_images_urls = [];
var gallery_images_tagged = '';
<% @car.photos.each do |car_photo| %>
var current_image_url = '<%= car_photo.image.url(:large) %>';
if(current_image_url != $('#changeme').attr('href')) gallery_images_tagged += '<a href="' + current_image_url + '" class="fancybox" rel="my_car_gallery" />';
<% end%>
$('#car_image div#large_images_gallery_div').replaceWith('<div id="large_images_gallery_div" style="visibility: hidden;">' + gallery_images_tagged + '</div');
});
$("a.fancybox").fancybox();
});
html:
<div id="car_image">
<%= link_to @car.photos.first.image.url(:large), :class => "fancybox", :rel => "my_car_gallery", :id => "changeme" do %>
<%= image_tag @car.photos.first.image.url(:medium) %>
<% end%>
<div id="large_images_gallery_div" style="visibility: hidden;">
<-- HERE ALL GALLERY IMAGES LINKS BEING PRELOADED -->
</div>
</div>
ПРОБЛЕМА : мой список загружается правильно, но fancybox показывает мне только первое изображение и не показывает другие, которые были добавлены с помощью метода jQuery replaceWith()
возможноон не может "видеть", что дерево DOM было изменено
Кстати, извините за мой плохой английский
UPDATE
HTML до загрузки ссылок на изображения:
<div id="car_image">
<a rel="my_car_gallery" id="changeme" class="fancybox" href="/uploads/photo/image/44/large_1.jpg">
<img src="/uploads/photo/image/44/medium_1.jpg">
</a>
<div style="visibility: hidden;" id="large_images_gallery_div">
</div>
</div>
HTML после изображенияПредварительная загрузка ссылок ges:
<div id="car_image">
<a rel="my_car_gallery" id="changeme" class="fancybox" href="/uploads/photo/image/44/large_1.jpg">
<img src="/uploads/photo/image/44/medium_1.jpg" >
</a>
<div style="visibility: hidden;" id="large_images_gallery_div">
<a rel="my_car_gallery" class="fancybox" href="/uploads/photo/image/45/large_2.jpg"></a>
<a rel="my_car_gallery" class="fancybox" href="/uploads/photo/image/46/large_3.jpg"></a>
<a rel="my_car_gallery" class="fancybox" href="/uploads/photo/image/47/large_4.jpg"></a>
<a rel="my_car_gallery" class="fancybox" href="/uploads/photo/image/48/large_5.jpg"></a>
</div>
</div>