0

所以到目前为止我已经使用了这个功能,但现在我正在努力解决一个问题。

我在这里做了一个小提琴:http: //jsfiddle.net/lharby/WhUJq/3/

我有一个隐藏的 ul,该函数从 ul 中获取 3 li 项并将它们附加到可见的 ul 中。

我想做的是在这些项目上有一个很好的淡入淡出功能。我希望褪色可以在每一里交错。

这是功能:

 function rndSlider() {

var $show = 3, // Number of items to show
    $elemLength = $('.slider li').length, // Total items
    $firstPart = '<li><img src="/img/slider/0',
    $lastPart = '.jpg" /></li>',
    array = [], // array with all available numbers
    rnd, value, i,
    $wrapper = $('.slider-clone');
    $('.slider-clone li').remove();

for (i = 0; i < $elemLength; i++) { 
  array[i] = i + 1;
}

for (i = 0; i < $show; i++) { // pick numbers
  rnd = Math.floor(Math.random() * array.length); 
  value = array.splice(rnd,1)[0]; // remove the selected number from the array and get it in another variable

  $wrapper.append($firstPart + value + $lastPart);
  }
}

我想知道是否需要 $('.slider-clone li').remove(); 上的 each 函数 应用于每个 li 元素(我有一个在 fiddle 上工作的 fadeIn 函数,但不是 fadeOut)。

然后淡入 $wrapper.append($firstPart + value + $lastPart);

但是我似乎无法使任何工作,当我应用其中之一时,它似乎扰乱了主要功能的运行。

TIA

4

2 回答 2

1

嗯..那很尴尬..当我发布这个..它运作良好..我认为这个问题可能与fadeIn和fadeOut异步完成..这里的问题是当创建子图像时fadeOut效果回调删除它们..

$(this).children().remove();

我已经更新了你的小提琴:

http://jsfiddle.net/WhUJq/15/

于 2013-07-14T14:24:03.467 回答
0

所以如果我理解正确,问题是淡出()效果?

代替:

$('.slider-clone li').each(function(){
    $(this).fadeOut(400);                           
});

使用以下代码解决该问题:

$wrapper.fadeOut('slow', function(){ $(this).children().remove(); });
于 2013-07-14T13:18:45.813 回答