我有一组元素:
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
和一个功能
function heightCheck(){
$('ul li').each(function(){
if($(this).height == 0){
heightCheck();
}else{
nextFunction();
}
})
}
基本上我希望它继续检查“li”元素的高度,直到所有元素都大于0高度。就像现在一样,如果第一个元素没问题,它会触发nextFunction,但其余元素都没有。在前进之前,我需要所有元素都有高度。
答案 0 :(得分:1)
您应该使用间隔,而不是递归调用函数。看起来你正在等待一些异步调用来填充列表项。您可以检查何时完成所有这些(可能是更好的选项)或使用间隔检查:
var heightInterval;
function nextFunction () {
clearInterval(heightInterval);
// etc.
}
heightInterval = setInterval(function () {
var done = true;
$('ul li').each(function(){
if($(this).height() == 0){
done = false;
return false;
}
})
if (done) {
nextFunction();
}
// check each second
}, 1000);
答案 1 :(得分:0)
您可以使用以下内容:
function heightCheck(){
var heightError = 0;
$('ul li').each(function(){
if($(this).height == 0){
heightError = 1;
heightCheck();
}
});
if(heightError == 0){
nextFunction();
}
}
我使用var heightError
来验证
答案 2 :(得分:0)
我相信无论
function heightCheck(){
var checkHeight = false;
for(var i =0; i > elements.height; i++){
checkHeight = checkHeight ||(elements.eq(i).height == 0);
if(checkHeight) break;
}
if(checkHeight)
heightCheck();
}else{
nextFunction();
}
}