jQuery:使用.each循环列表
我有一个非常简单的列表,其中包含我需要循环的图像。以下是脚本:jQuery:使用.each循环列表,jquery,html-lists,Jquery,Html Lists,我有一个非常简单的列表,其中包含我需要循环的图像。以下是脚本: var graphic = $('#banner li'); graphic.hide(); cycle = $(graphic).each(function(i,e) { while(i-- >= 0){ $(e).show(300).delay(2000).hide(300) } if(i===0){cycle()} }) 它几乎起作用了。。它显
var graphic = $('#banner li');
graphic.hide();
cycle = $(graphic).each(function(i,e) {
while(i-- >= 0){
$(e).show(300).delay(2000).hide(300)
}
if(i===0){cycle()}
})
它几乎起作用了。。它显示所有图像,而不是一次显示一个,但在浏览列表时删除每个图像。我可以使用溢出:隐藏代码>在我的CSS中,但我不希望这样。当它达到0时,它也不会重复
请帮忙。对于这样一个简单的任务,我也不想要臃肿的循环插件。谢谢
**我试着将图形
制作成一个数组,但我也无法让它工作
使用以下方法稍微重构您的逻辑: 通过将IIFE本身作为回调传递,我们可以在当前迭代的
.hide()
动画完成后,为下一项重复显示、延迟和隐藏循环
您可以在函数末尾递增<代码> i>代码,并在输入IIFE之前调用<代码>图形.HIDEE()/<代码>,一些人可能认为更可读:
var graphic = $('#banner li'),
i = 0,
l = graphic.length;
graphic.hide();
(function cycle() {
graphic.eq(i % l).show(300).delay(2000).hide(300, cycle);
i++;
}());
上面的内容只是为了便于阅读,它与第一个代码片段具有相同的效果。
cycle()
没有多大意义,它是一个对象而不是一个函数……我只是试图引用该函数。原始脚本被包装在animateBanner()
中。我无法引用cycle()
?在旁注中,您不需要$(图形)
-graphic
已经是jQuery对象;只需使用图形。每个(…
。老实说,我不明白你的代码在做什么。检查重构版本是否有助于尝试-它并不完美,但一次只显示一个图像,并在最后回忆自己。
var graphic = $('#banner li'),
i = 0,
l = graphic.length;
graphic.hide();
(function cycle() {
graphic.eq(i % l).show(300).delay(2000).hide(300, cycle);
i++;
}());