2013-10-05 28 views
6

JQuery'in height özelliği her zaman 0 değerini döndürür. Bootstrap ile birlikte kullanıyorum. Çatışma olacağından emin değil. Birkaç çevrimiçi önerilen çözümden geçtim ama düzeltmedim. Aşağıda kod display: none olabileceğinijquery height döndürür 0

/*html */ 
<div class="hidden-sm hidden-md hidden-lg" class="mobNewsEvents"> 
<div class="row"> 
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
<h3 style="text-align: center;">Events</h3> 
<div class="mobEvents"> //need to get the height of this div element 
<ul> 
    <li>...</li> 
</ul> 
</div> 
</div> 
</div> 
</div> 

/*script*/ 
(function($){ 
$(window).load(function(){ 
    var temp = $('.mobEvents').height(); 
    alert(temp); 
}); 
})(jQuery); 
+0

'class' değer anlaşılacağı gibi div' hidden' mı? Sonra yüksekliği * 0 * – Bergi

+0

Teşekkürler Bergi. Bunu kazıyorum. Doğru olabilirsiniz. Bu düzeltirse size bildirir. – Ram

+0

Evet, fark etmeyi unuttuğumdan farklı olarak, ebeveyn sınıfının ekran özelliğidir. Yardımınız için teşekkürler. – Ram

cevap

10

class="hidden-sm hidden-md hidden-lg" ipuçları parçacıkları bulunmaktadır. Bu durumda, height mevcut değildir. Göster onu, ölç ve sakla.

+0

Görüntüleme özelliği hiçbiri olarak ayarlanmamış gibi görünüyor. Denemeliyim. Bu arada, müşteriye UI'de neler olup bittiğini bildirmeden göstermesi, ölçülmesi ve saklanması için daha iyi bir çözüm önerir misiniz? – Ram

+0

Evet Bu, fark etmeyi unuttuğumdan başka, üst sınıfın birinin görüntüleme özelliğidir. Yardımınız için teşekkürler. – Ram

+0

"Göstermek, ölçmek ve saklamak için daha iyi bir çözüm" Eğer yükseklik açıkça CSS'ye ayarlanmışsa, CSS kurallarını ayrıştırma deneyebilirsiniz (bunu tavsiye etmem!); ama bunun dışında bir yol bilmiyorum. Ancak, "müşteriye UI'de neler olup bittiğini bilmeden?" gerçekten doğru değil - tarayıcı iki yeniden düzenler, ancak algılanamaz gecikme (belge gerçekten karmaşık olmadığı sürece) dışında, kullanıcı bir şey fark etmemelidir. Tarayıcı, yalnızca JS iş parçacığı bittiğinde bir boyamayı yapar; bu, önceden boyanmış olan ekranla aynı olacaktır. – Amadan

2

Bunun yerine aşağıdakileri deneyin. window.load, belge öğelerini ele almak için iyi bir yol değildir.

$(document).ready(function(){ 
    var temp = $('.mobEvents').height(); 
    alert(temp); 
}); 

Aynı sınıfa sahip birden fazla öğeniz varsa, yalnızca ilk öğeyi alır.

$(document).ready(function(){ 
    var temp = $('.mobEvents':First).height(); 
    alert(temp); 
}); 

veya alternatif kullanabileceğiniz

$(document).ready(function(){ 
    var temp = $('.mobEvents').attr("height").value(); 
    alert(temp); 
}); 
+0

Lütfen cevabı ve çabayı takdir etmek için zaman ayırın. – Tauseef

+0

Evet anladığım bir şey, sınıf isminin tekrarlanmaması gerektiğidir. Bir sorun daha görüntülü özellik hiçbiri olmadı. Emeğin için teşekkürler. – Ram

+0

@ user2425218, sınıfları tanımlamanın amacı, sınıfı birçok öğe üzerinde tekrarlamaktır. Gizli öğeler, herhangi bir olay ve özellik içermez. Gerçekten kullanmalısınız '$ (document) .ready (...)' – Tauseef

İlgili konular