【发布时间】:2011-07-12 22:03:11
【问题描述】:
我正在尝试迭代两层或多层,一层淡出,一层淡入。 开始时,两个图层的样式都是“display:none;” - 因此,在第一个方法调用中,我只使用 fadeIn() 元素 .eq(0) - 之后,我总是 fadeOut() .layer:visible 和 fadeIn() .eq(currentSlide)。 currentSlide 之前用 0 初始化,并在每次调用时进行迭代。
不费吹灰之力,人们会这么想。 但这是发生的事情: 每当动画开始时,第一个元素会淡出 两次 - 之后动画按预期运行,但元素的顺序不同。标记中的第一个元素突然是 .eq(1),而第二个元素位于索引 .eq(0)。
如果我删除 display:none;从图层来看,一切都很完美 - 它必须与可见性设置有关,也许是选择器看不到图层? (但是 .children().length() 总是给我正确的数字……)
标记:
<div class="elements">
<div class="layer"><img src="uploads/pics/one.png" /></div>
<div class="layer"><img src="uploads/pics/two.png" /></div>
</div>
用coffescript写的jQuery插件方法:
if element.find('.layer:visible').length > 0 and element.find('.elements').children().length > 1
element.find('.layer:visible').fadeOut -> element.find('.elements').children().eq(currentSlide).fadeIn()
else
element.find('.elements').children().eq(0).fadeIn()
# Iterate over slides or reset to zero if last one is reached
if currentSlide < element.find('.elements').children().length - 1
currentSlide++
else
currentSlide = 0
【问题讨论】:
标签: jquery coffeescript