JS Fiddle位于:http://jsfiddle.net/8nqkA/2/
HTML
<div>
<div class="show">Test 1</div>
<div class="hidden">Test 2</div>
<div class="hidden">Test 3</div>
<div class="hidden">Test 4</div>
</div>
的jQuery
$(document).ready(function() {
myFunc($(".show"));
});
function myFunc(oEle)
{
oEle.fadeOut('slow', function(){
if (oEle.next())
{
oEle.next().fadeIn('slow', function(){
myFunc(oEle.next());
});
}
else
oEle.siblings(":first").fadeIn('slow', function(){
myFunc(oEle.siblings(":first"));
});
});
}
CSS
.hidden {
display: none;
}
尝试让它在完成后循环回测试1,但不起作用。只是想让它重新开始,这有什么不对吗?
答案 0 :(得分:1)
在您的代码中 -
$(document).ready(function() {
myFunc($(".show"));
});
function myFunc(oEle)
{
oEle.fadeOut('slow', function(){
if (oEle.next().length)
{
oEle.next().fadeIn('slow', function(){
myFunc(oEle.next());
});
}
else
oEle.siblings(":first").fadeIn('slow', function(){
myFunc(oEle.siblings(":first"));
});
});
}
点击此处查看演示 - http://jsfiddle.net/8nqkA/3/
答案 1 :(得分:1)
if (oEle.next()){ // This needs to be oEle.next().length
oEle.next().fadeIn('slow', function(){
myFunc(oEle.next());
});
}else{ // You should wrap this in a block
oEle.siblings(":first").fadeIn('slow', function(){
myFunc(oEle.siblings(":first"));
});
}
我们测试.length
的原因是因为.next()
和大多数jQuery方法一样,返回jQuery - 无法直接测试。你可以把它想象成一个数组,所以.length
属性为我们提供了当前选择中有多少元素。
我们还应将您的else
代码封装在一个块({..}
)中,因为以下代码跨越多行。