2012-02-13 3 views
0

Я просил и сделать код последующей:JQuery слайд-шоу миниатюр показать/скрыть

$(document).ready(function() { 
    $('.gallery').each(function(index, element) { 
     var id = $(this).attr('id'); 
     var images = $('#' + id + ' .content li').index() -1; 

     $('#' + id + ' .prev').click(function(e) { 
      e.preventDefault(); 

      if($('#' + id + ' .content .current').prev().length == 0) { 
       $('#' + id + ' .content .current').fadeOut(1000).removeClass('current').hide(); 
       $('#' + id + ' .content li:last').fadeIn(1000).addClass('current').show(); 
      } else { 
       $('#' + id + ' .content .current').removeClass('current').fadeOut(1000).hide().prev().fadeIn(1000).addClass('current').show(); 
      } 

      return false; 
     }); 

     $('#' + id + ' .next').click(function(e) { 
      e.preventDefault(); 

      if($('#' + id + ' .content .current').next().length == 0) { 
       $('#' + id + ' .content .current').fadeOut(1000).removeClass('current').hide(); 
       $('#' + id + ' .content li:first').fadeIn(1000).addClass('current').show(); 
      } else { 
       $('#' + id + ' .content .current').removeClass('current').fadeOut(1000).hide().next().fadeIn(1000).addClass('current').show(); 
      } 

      return false; 
     }); 

     $('#' + id + ' .thumbnails li').click(function(e) { 
      e.preventDefault(); 

      $('#' + id + ' .content .current').removeClass('current').hide(); 
      $('#' + id + ' .content .thumbnails').removeClass('current'); 
      $('#' + id + ' .content li').eq($(this).index()).fadeIn(1000).addClass('current').show(); 

      return false; 
     }); 

     $('#' + id + ' .thumbnails ul').css('width', $('#' + id + ' .thumbnails ul li').length * scrollWidth + 'px'); 
     $('#' + id + ' .content li:first').addClass('current').show(); 
    }); 
}); 

HTML-:

<div id="galerry-one" class="gallery"> 
    <div class="content"> 
     <ul> 
      <li id="content-1"><img src="image1.jpg" /></li> 
      <li id="content-2"><img src="image2.jpg" /></li> 
      <li id="content-3"><iframe src="http://www.youtube.com/..."></iframe></li> 
      <li id="content-4"><img src="image3.jpg" /></li> 
      <li id="content-5"><iframe src="http://www.youtube.com/..."></iframe></li> 
     </ul> 
    </div> 
    <div class="thumbnails"> 
     <span class="prev"> « </span> 
     <ul> 
      <li id="go-content-1"><img src="image1_thumbnai.jpg" /></li> 
      <li id="go-content-2"><img src="image2_thumbnai.jpg" /></li> 
      <li id="go-content-3"><img src="youtube1_thumbnai.jpg" /></li> 
      <li id="go-content-4"><img src="image3_thumbnai.jpg" /></li> 
      <li id="go-content-5"><img src="youtube2_thumbnai.jpg" /></li> 
     </ul> 
     <span class="next"> » </span> 
    </div> 
</div> 

Проблема теперь в том, как я могу ограничить до 4 миниатюр каждый раз, когда я щелкните предыдущий/следующий?

+0

Не могли бы вы немного объяснить, что вы на самом деле что? Вы хотите прокручивать миниатюры, но видите только 4 за раз? и как насчет верхнего содержания? –

+0

Я проделал работу, чтобы показать выбранную миниатюру, и если щелкнуть предыдущий или следующий, работайте нормально. проблема в том, что если у меня есть 10 изображений, я хочу показать первые 4 и скрыть других. при нажатии предыдущей, скрыть первое и показать последнее, или, если я нажму дальше, показать 5 и скрыть первое, вы меня понимаете? –

ответ

1

У меня была аналогичная реализация для показа 4 предметов и прокрутки с опцией Prev/Next. Так что я просто изменил немного для того, чтобы работать с HTML .. Проверьте мой DEMO

Изменить elToShow вар настроить сколько миниатюр вы хотели показать.

var stPt = 0, elToShow = 4; //showing 4 elements 

var $ul = $('.thumbnails ul'); 
var $li = $('.thumbnails ul li'); //get the list of li's 
var $copy_li = []; 
var copy_lgt = $li.length - elToShow; 

//call to set thumbnails based on what is set 
initNav(); 
function initNav() { 
    var tmp; 
    for (var i = elToShow; i < $li.length; i++) { 
     tmp = $li.eq(i); 
     $copy_li.push(tmp.clone()); 
     tmp.remove(); 
    } 
} 

$('.next').click (function() { 
    $li = $('.thumbnails ul li'); //get the list of li's 

    //move the 1st element clone to the last position in copy_li 
    $copy_li.splice(copy_lgt, 0, $li.eq(0).clone()); //array.splice(index,howmany,element1,.....,elementX) 

    //kill the 1st element in the UL 
    $li.eq(0).remove(); 

    //add to the last 
    $ul.append($copy_li.shift()); 
}); 

$('.prev').click (function() { 
    $li = $('.thumbnails ul li'); //get the list of li's 

    //move the 1st element clone to the last position in copy_li 
    $copy_li.splice(0, 0, $li.eq(elToShow-1).clone()); //array.splice(index,howmany,element1,.....,elementX) 

    //kill the 1st element in the UL 
    $li.eq(elToShow-1).remove(); 

    //add to the last 
    $ul.prepend($copy_li.pop()); 

}); 
+0

Работал отлично! –

Смежные вопросы