0

我正在尝试创建一个滑块功能,该功能会影响文档上的多个滑块元素。停留在 setInverval 值。

这是测试jsFiddle。

当它只是一个时,效果很好。

function repSlider(target) {
        target = $(target);
        targetEl = target.find('.drop_leds');
        targetEl.hide().first().addClass('active').show();
        totalEl = targetEl.length-1;

        setInterval(function() {
            curEl = target.find('.active.drop_leds').index();
            curEl == totalEl ? curEl = 0 : curEl += 1;
            console.log(curEl);//this gives bug
            targetEl.hide().removeClass('active')
            .eq(curEl).addClass('active').fadeIn(444);
        },3000);

}

repSlider('.targetClassA');
repSlider('.targetClassB');

也尝试了不同的方法,但结果是一样的。

$.fn.repSlider = function() {
        target = $(this);
        targetEl = target.find('.sliderEl');
        targetEl.hide().first().addClass('active').show();
        totalEl = targetEl.length-1;

        return window.setInterval(function() {
            curEl = target.find('.active.sliderEl').index();
            curEl == totalEl ? curEl = 0 : curEl += 1;
            console.log(curEl);//this gives bug
            targetEl.hide().removeClass('active')
            .eq(curEl).addClass('active').fadeIn(444);

    },3000);
}

$('.repSliderA').repSlider();
$('.repSliderB').repSlider();
4

1 回答 1

0

解决了从函数中获取 setInverval 的问题:

这是工作的jsFiddle。

$('.targetClassA > div').hide().first().addClass('active').show();
$('.targetClassB > div').hide().first().addClass('active').show();
function repSlider(target) {
    target = $(target);
    targetEl = target.find('.drop_leds');
    totalEl = targetEl.length-1;

    curEl = target.find('.active.drop_leds').index();
    curEl == totalEl ? curEl = 0 : curEl += 1;
    console.log(curEl);//this gives bug
    targetEl.hide().removeClass('active')
    .eq(curEl).addClass('active').fadeIn(444);

}

var repSliderAInt = setInterval(function() {
    repSlider('.targetClassA');
},3000);
var repSliderBInt = setInterval(function() {
    repSlider('.targetClassB');
},3000);
于 2013-08-15T10:13:19.047 回答