[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Некорректное поведение eq
alex12060
Здравствуйте :)

У меня появилась проблема, которую не могу решить уже часа 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);

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.