У меня появилась проблема, которую не могу решить уже часа 3.
В общем, я переделываю плагин, который листает вверх и вниз хтмл блоки.
Там все очень просто, но встала задача сделать кнопки перелистывания. Переписал код, сделал простую логику, но отказывается наотрез работать.
Я приведу код с комментариями в нем, чтобы было понятно.
Суть проблемы в том, что при обычном листании - все работает хорошо. Т.е. переменная current меняет свое значение и текущий и следующий блок находятся. Но при явном указании текущего блока, путем изменения переменной current - находит текущий блок, а второй - возвращает undefined. Всё проверял, все значения меняются, все просто хорошо. Но прям дилемма.
Вот код. Буду очень благодарен помощи. А то я прям в ступоре :)
Свернутый текст
(function($){
$.fn.list_ticker = function(options) {
var defaults = {
speed:4000,
effect:'slide',
run_once:false,
random:false,
btn: '.slideCurrent',
};
var options = $.extend(defaults, options);
return this.each(function(){
var obj = $(this);
var list = obj.children();
var count = list.length;
var current = 0;
function slide() {
if (count == current) {
current = 0;
}
// закрашиваем кнопки
$('ul.sliderNav li.current').removeClass('current');
$( 'ul.sliderNav li.slide-' + current ).addClass('current');
var first_li = list.eq(current);// получаем текущий блок
var second_li = list.eq( (current+1 == count) ? 0 : current+1); // получаем следующий блок
// alert(current + ' - ' + second_li.html()); // при задании из вне: 2 - undefined
if(options.effect == 'slide'){
first_li.slideUp();
second_li.slideDown(function(){
// alert('N - ' + current); // при задании из вне: не отрабатывает
});
} else if(options.effect == 'fade'){
first_li.fadeOut(function(){
obj.css('height',second_li.height());
second_li.fadeIn();
current++;
});
}
current++;
}
$(options.btn).click(function(e) {
e.preventDefault();
current = $(this).attr('data-el'); // значение получаем
slide();
});
list.hide(); // скрываем блоки
var interval = setInterval(function(){
slide();
}, options.speed)
});
};
})(jQuery);