我是JavaScript和jQuery的初学者,我想知道如何继续这部分代码,
我有一个带回调函数,例如:
myFunc(elem, callback) {
$(elem).fadeIn(function(){ callback(); });
}
我想为数组中的元素运行此函数:
elems = ['#elem1', '#elem2_3', '#elem4_5', '#elem3', '#elem_five'];
但是,我想通过回调逐个地为数组的每个元素执行此函数。 例如。一旦#elem1有fadein,就必须淡化第二个元素..etc
现在我这样做:
我试过做一个for循环,但它们是在同一时间执行的。
for (i = 0; i < elems.length; i++) {
myFunc(elem[i], function(){
if (elem[i+1]) {
myFunc(elem[i+1]);
}
});
}
那你怎么办?
答案 0 :(得分:1)
这样做,一个针对您的问题的递归解决方案,
function myFunc(elems, cnt)
{
if(cnt > (elems.length - 1)) { return; }
$(elems[cnt]).fadeIn("slow", function(){ myFunc(elems , ++cnt); });
}
myFunc(['#elem1', '#elem2_3', '#elem4_5', '#elem3', '#elem_five'], 0);
答案 1 :(得分:0)
试
var elems = ['#elem1', '#elem2_3', '#elem4_5', '#elem3', '#elem_five'];
var len = elems.length;
function myFunc(index) {
$(elems[index]).fadeIn(function () {
if (len > ++index) myFunc(index);
return;
});
}
myFunc(0);
答案 2 :(得分:0)
链接更新: http://jsfiddle.net/kuw6tt92/1/
function fadeIn(selectors) {
var elements = Array.prototype.slice.call($(selectors));
function fade() {
jQuery(elements.shift()).fadeIn("slow", fade);
}
fade();
}
fadeIn("div");