2012-03-27 4 views
1

У меня есть несколько фотографий для продукта, и я хочу, чтобы пользователь мог нажимать миниатюру, а затем отображать большое изображение. Я использовал простой учебник JQuery http://papermashup.com/simple-jquery-gallery/, но по какой-то причине, когда я нажимаю на миниатюры, отображается только большое изображение эскиза, на который я щелкнул. Другие эскизы исчезли, поэтому я не могу вернуться к нему.JQuery для фотогалереи

Я использую Carrierwave, рельсы 3.2 и JQuery, который поставляется с рельсами 3.2

$(function() { 
$(".image").click(function() { 
var image = $(this).attr("rel"); 
$('#image').hide(); 
$('#image').fadeIn('slow'); 
$('#image').html('<img src="' + image + '"/>'); 
return false; 
}); 
}); 


<div id ="image" > 
<%= image_tag(@product.prod_images.first.image_url(:large_pic)) %> 
<% @prod_images.each do |image| %>   
<ul class="thumbs"> 
    <li> 
    <a href="#" rel="<%= image.image_url(:large_pic) %>" class="image"> 
    <%= image_tag(image.image_url(:thumb_pic)) if image.image? %> 
    </a> 
    </li> 
</ul> 
<% end %> 
</div> 

Пожалуйста, помогите!

ответ

2

Когда вы устанавливаете HTML-код #image, вы заменяете весь код внутри. почему ваши значки миниатюр исчезли.

Вы должны попробовать это вместо:

<div id ="image" > 
    <%= image_tag(@product.prod_images.first.image_url(:large_pic)) %> 
</div> 
<% @prod_images.each do |image| %>   
<ul class="thumbs"> 
     <li> 
     <a href="#" rel="<%= image.image_url(:large_pic) %>" class="image"> 
     <%= image_tag(image.image_url(:thumb_pic)) if image.image? %> 
     </a> 
     </li> 
</ul> 
<% end %> 
+0

Как я могу сделать миниатюру активной? Благодарю. – noob

0

Используйте лайтбокс галерею плагин, как colorbox

+0

Привет. Я пытаюсь избежать плагинов, потому что я не знаю много jQuery, и я не хочу, чтобы что-то было полным. В настоящее время я использую плагин Galleriffic, но он настолько сложный, что я должен танцевать вокруг него с помощью моего другого кода. – noob

0

Вы DIV тега с идентификатором «образом» содержит ваш Ли. В вашем скрипте вы заменяете HTML этого div тегом изображения. Вы должны перенести свой li из div «image» и в отдельный div.

+0

Благодарим вас за ответ. Хотя ваш ответ такой же, как у MKal, так как он выдает реальный код. Спасибо. – noob

0

Решение закончилось тем, что это:

$('#thumb_holder li a').click (function(){ 
     mainImg = $(this).attr('rel'); 
     if(mainImg != current){ 
      $('.current').fadeOut('slow'); 
      $('#'+mainImg).fadeIn('slow', function(){ 
       $(this).addClass('current'); 
       current = mainImg; 
      }); 
      $('#thumb_holder li').find('img').css('display','block'); 
     } 
     $(this).children("img").toggle(); 
    }); 
Смежные вопросы