2013-07-30 4 views
1

Я создаю очень простой слайд-шоу с нуля:функция вызова на основе значения переменной

enter image description here

... который работает на 3-х основных переменных:

var slideshowItem_place = 0; 
var slideshowItem_position = 0; 
var slideshowItem_limit = parseInt($('.slideshowImage_container').length) - 1; 

Основная функция, которая делает выполнение слайд-шоу следующим:

function slideshow_animateSliding(){ 
    slideshowItem_position = 0 - (slideshowItem_place * 1280); 
    $('#slideshowContent').stop().animate({'left':slideshowItem_position + 'px'}, 1000, 'swing'); 
    } 

Большие пальцы, хотя ...

enter image description here

... Я не знаю, как заставить их автоматически меняться в зависимости от видимой горки, когда он играет.

большой палец код:

$('#slideshow_thumbsContainer').on('click', '> div:not(.slideshowThumbs_active)', function(){ 

    var $this_slideshowThumbs_notActive = $(this); 
    var $this_slideshowThumbs_active = $('#slideshow_thumbsContainer > div.slideshowThumbs_active'); 

    function thumbsDeactivate(){ 
    // Deactivate currently slideshowThumbs_active animation... 
    } 

    function thumbsActivate(){ 
    thumbsDeactivate(); 
    // Activate clicked slideshowThumbs animation... 
    } 

    thumbsActivate(); 

}); 

Я думаю, что я должен вызвать функцию thumbsActivate() в той, которая запускает слайд-шоу - slideshow_animateSliding() - просто не могу понять, логика.

Вот некоторые псевдо-код для того, что мне нужно:

  • если slideshowItem_place = 0 затем запустить thumbsActivate (# slideshow_thumbOutline01)
  • если slideshowItem_place = 1 затем запустить thumbsActivate (# slideshow_thumbOutline02)
  • и т.д.

Полный FIDDLE.

Thanx.

Педро

+0

делают использование хелпера-класса и каждый раз цикл в slideshowAutoplay() вы проверить, если ток-элемент имеет вспомогательный класс, получить его индекс и выделить thumboutline с совпадающим индексом, sth вроде этого –

+0

Например, пожалуйста, живой пример? – Pedro

+0

Вам нужно оптимизировать свой код, вы должны использовать циклы. Я вижу много избыточного кода. – JonathanRomer

ответ

0

STH как

function slideshowAutoplay(){ 
    if (slideshowItem_place < slideshowItem_limit){ 
     slideshowItem_place ++; 
     $('.slideshow_thumbInner').eq(slideshowItem_place).css('background-color','red');} 
    else{ 
     slideshowItem_place = 0; 
     slideshow_animate(); 
    } 
} 
+0

Ну, мне нужно что-то большее: ** $ ('. Slideshow_thumbOutline'). Eq (slideshowItem_place) .thumbsActivate(); ** вызываемый внутри ** slideshow_animateSliding() ** вместо функции автовоспроизведения (он не работает, хотя) – Pedro

+0

, тогда, возможно, вам следует написать свою функцию параметризованную как: thumbsActivate (number); или написать отдельный, а затем вызвать его с активным индексом, например thumbsActivate (slideshowItem_place); –

+0

Не может показаться, что это работает ... @john Smith, не могли бы вы проиллюстрировать это на моей скрипке, пожалуйста? – Pedro