我对这段代码有疑问:
var elements;
var current = 100;
$(document).ready(function() {
elements = = $('.slide').length;
iterate();
});
function iterate() {
$('.slide').eq(current).hide().queue(
function() {
if (++current >= elements) { current = 0; }
$('.slide').eq(current).show();
$(this).dequeue();
}
);
// Call this function again after the specified duration
setTimeout(iterate, 1000);
}
我要做的是使用'slide'类迭代所有元素,但是我在更新'current'变量时遇到问题。它的值始终为0.如何从嵌套的jquery函数中修改全局变量?
答案 0 :(得分:4)
如果在DOM准备好之前调用此行,.length
为0
:
var elements = $('.slide').length;
这表示此if
的条件始终为true
:
if (++current >= elements) { current = 0; }
你可以这样解决:
var elements;
var current = 100;
$(document).ready(function() {
elements = $('.slide').length;
iterate();
});
此外,这是.queue()
的一点奇怪用法。没有什么需要排队的。
我会像这样重做:
function iterate() {
var slide = $('.slide').eq(current).hide();
if (++current >= elements) { current = 0; }
$('.slide').eq(current).show();
// Call this function again after the specified duration
setTimeout(iterate, 1000);
}