2012-07-19 19 views
5

Bu sorunu daha önce hiç yaşamadım ama çözümü bulamıyorum, umarım siz bana yardımcı olabilirsiniz.jQuery height() Boyut değiştirilemedi()

bu işlevin ne jQuery

function setTheHeight() { 

    if($('#main.level1 .block.attention .block-content').length) { 
     //Get value of highest element 
     var maxHeight = Math.max.apply(Math, $('#main.level1 .block.attention .block-content').map (
      function() { 
       return $(this).height(); 
      } 
     )); 
     console.log(maxHeight); 
     $('#main.level1 .block.attention .block-content').height(maxHeight); 
    } 
} 

setTheHeight(); 

$(window).resize(function() { 
    setTheHeight(); 
}); 

Javascipt bu yüksekliğe seçilen tüm div'lerden yüksekliğini en yüksek div kontrol edip ayarlandı. Bu iyi çalışıyor. AMA, duyarlı bir tasarımdır, böylece kullanıcı yeniden boyutlandırıldığında tarayıcının içeriği küçülür ve div daha yüksek olur. Bu yüzden bir yeniden boyutlandırma etkinliği ekledim. Etkinlik kovuluyor ama yükseklik değiştirmiyor. Yeniden boyutlandırma neden yüksekliği değiştirmiyor? ne göstermek için

Hızlı jsFiddle: http://jsfiddle.net/3mVkn/

FIX

Hmm bu sadece düz aptal oldu. Yüksekliği() ayarlı olduğum için zaten düzeltildi, bu yüzden tek yapmam gereken sadece yüksekliği sıfırlamak ve işe yaradı.

Güncelleme kod:

function setTheHeight() { 

    if($('#main.level1 .block.attention .block-content').length) { 

     //Reset height 
     $('#main.level1 .block.attention .block-content').height('auto'); 

     //Get value of highest element 
     var maxHeight = Math.max.apply(Math, $('#main.level1 .block.attention .block-content').map (
      function() { 
       return $(this).height(); 
      } 
     )); 
     console.log(maxHeight); 
     $('#main.level1 .block.attention .block-content').height(maxHeight); 
    } 
} 

setTheHeight(); 

$(window).resize(function() { 
    setTheHeight(); 
}); 

cevap

3

Bu jQuery ile ilgili değil, CSS'dir. Bunun nedeni, bir kez .block içeriğinin yüksekliğini bir değere ayarladıktan sonra, pencereyi yeniden boyutlandırdıktan sonra, yüksekliklerin artık auto olarak ayarlandığından, ancak önceden tanımlanmış bir değere ayarlanmasından dolayı .block içeriğinin yüksekliği değişmeyecektir.

Bu çözüm, return $(this).height() yerine return $(this)[0].scrollHeight kullanmaktır. Böylece, CSS tanımlı yüksekliği değil, içeriğin gerçek yüksekliğini döndürür.

DÜZENLEME:

çözüm .block-içerik içindeki tüm çocukların yüksekliğini hesaplamak ve sonra bu değeri döndürmek için aslında. Kodunuzu burada düzenledim http://jsfiddle.net/3mVkn/12/

Bu size gereken sonucu vermelidir.

+0

Merhaba Dennis, cevabınız için teşekkürler. Ne yazık ki bu probleem düzeltmek için görünmüyordu :( – Sjors

+0

Evet, haklısın. Lütfen düzenlemeyi kontrol edin, şimdi doğru çözümü sağladım. –

0

Sana .map() fonksiyonun bir parametre eksik olduğunu düşünüyorum. .map()here'a baktım.