2014-02-14 31 views
-1

我有一組元素:檢查,如果任一元素的高度爲0

<ul> 
    <li></li> 
    <li></li> 
    <li></li> 
    <li></li> 
</ul> 

和功能

function heightCheck(){ 
    $('ul li').each(function(){ 
    if($(this).height == 0){ 
     heightCheck(); 
    }else{ 
     nextFunction(); 
    } 
    }) 
} 

基本上我希望它繼續檢查身高「麗」元素直到所有元素的高度都大於0。就像現在一樣,如果第一個元素沒問題,其餘的都不會,它會觸發nextFunction。我需要所有元素在前進之前擁有高度。

+0

您作爲遞歸結束了,如果元素'身高是0 ... –

+0

什麼會導致李的身高改變? – Musa

+0

即使是空的,li的高度也不會爲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); 
+0

這是一個,謝謝! –

0

您可以使用這樣的事情:

function heightCheck(){ 
    var heightError = 0; 
    $('ul li').each(function(){ 
    if($(this).height == 0){ 
     heightError = 1; 
     heightCheck(); 
    } 
    }); 

    if(heightError == 0){ 
    nextFunction(); 
    } 
} 

我使用了var heightError到驗證

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(); 
    } 
} 
相關問題