检查是否有任何元素的高度为0

时间:2014-02-14 19:13:00

标签: jquery css function height

我有一组元素:

<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,但其余元素都没有。在前进之前,我需要所有元素都有高度。

3 个答案:

答案 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();
   }
 }