2013-07-31 79 views
3

我使用這個js使兩個div與靜態內容工作正常,但是當圖像/被在動態高度加載的內容,因爲我想象的劇本是被設置爲0像素相同的高度在內容被拉出之前開火。有沒有一種方法可以延遲這種發射幾秒鐘的時間,以便設置正確的高度?嘗試超時功能,但不可能得到它的工作jQuery的延遲腳本

// make stuff the same height 
equalheight = function (container) { 

var currentTallest = 0, 
currentRowStart = 0, 
rowDivs = new Array(), 
$el, 
topPosition = 0; 
$(container).each(function() { 

    $el = $(this); 
    $($el).height('auto') 
    topPostion = $el.position().top; 

    if (currentRowStart != topPostion) { 
     for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) { 
      rowDivs[currentDiv].height(currentTallest); 
     } 
     rowDivs.length = 0; // empty the array 
     currentRowStart = topPostion; 
     currentTallest = $el.height(); 
     rowDivs.push($el); 
    } else { 
     rowDivs.push($el); 
     currentTallest = (currentTallest < $el.height()) ? ($el.height()) :  (currentTallest); 
    } 
    for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) { 
     rowDivs[currentDiv].height(currentTallest); 
    } 
}); 
} 


$(window).load(function() { equalheight('.equal'); }); 
$(window).resize(function() { equalheight('.equal'); }); 
+1

您正在使用AJAX來加載內容? –

+0

你可能想看看https://github.com/desandro/imagesloaded –

+1

如果你不使用$(文件)。就緒(),然後就用這個包裝你的代碼,看看會發生什麼 –

回答

-1

爲什麼當你選擇你的元素,你作出這樣的:

$el = $(this); 
$($el).height('auto'); 

您不能選擇一個選擇。 你只寫:

$el = $(this);  
$el.height('auto'); 

我不知道,如果我說是顯而易見的,但它似乎不可思議。

那麼對於你的問題,你應該嘗試做設定在阿賈克斯成功的高度。 並檢查您的選擇器以確保它是正確的。

+0

你是對的,但這與提出的問題無關,因此是一個不正確的答案。 – iConnor

+0

是OP使用Ajax? – iConnor

0

你的回答並沒有提供足夠的信息,以提供一個明確的答案,我要跳槍,並假設你試圖setTimeout,你調用的函數,如果是這種情況,那麼相反,嘗試在該setTimeout像這樣起作用。

// make stuff the same height 

equalheight = function (container) { 
    window.setTimeout(function() { // Start setTimeout 

     var currentTallest = 0, 
      currentRowStart = 0, 
      rowDivs = new Array(), 
      $el, 
      topPosition = 0; 
     $(container).each(function() { 

      $el = $(this); 
      $($el).height('auto') 
      topPostion = $el.position().top; 

      if (currentRowStart != topPostion) { 
       for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) { 
        rowDivs[currentDiv].height(currentTallest); 
       } 
       rowDivs.length = 0; // empty the array 
       currentRowStart = topPostion; 
       currentTallest = $el.height(); 
       rowDivs.push($el); 
      } else { 
       rowDivs.push($el); 
       currentTallest = (currentTallest < $el.height()) ? ($el.height()) : (currentTallest); 
      } 
      for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) { 
       rowDivs[currentDiv].height(currentTallest); 
      } 
     }); 
    }, 5000); // End setTimeout 
};