2013-10-05 7 views
6

jqueryのheightプロパティは常に0を返します。これはBootstrapと一緒に使用しています。それが紛争かどうかはわかりません。私はいくつかのオンラインで推奨されている解決策を経験しましたが、修正しませんでした。次のコードは、これがdisplay: noneかもしれないとjqueryの高さは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'値が示すようにdiv要素' hidden'ですか?その後、その高さは* 0です。 – Bergi

+0

ありがとうBergi。私はこれを掘り下げている。あなたは正しいかもしれません。これで解決すれば教えてくれます。 – Ram

+0

はい、私は注意して忘れてしまったものとは別に、親クラスの表示プロパティです。あなたの助けをありがとう – Ram

答えて

10

class="hidden-sm hidden-md hidden-lg"ヒントスニペットです。この場合、heightは利用できません。それを表示し、測定し、それを隠す。

+0

displayプロパティがnoneに設定されているようです。私は試してみましょう。一方で、UIで何が起こっているかをクライアントに知らせずに、それを表示、測定、隠すためのより良いソリューションを提案しますか? – Ram

+0

はい、私は注意して忘れてしまったものとは別に、親クラスの表示プロパティです。あなたの助けてくれてありがとう – Ram

+0

"それを見せて、測定して隠すもっと良い解決策" CSSで高さが明示的に設定されていれば、CSSルールを解析することができます。それ以外の方法は分かりません。しかし、「UIに何が起きているかをクライアントに知らせずに」実際には正しくありません。ブラウザは2つの再レイアウトを行いますが、目に見えない遅延以外は(ドキュメントが本当に複雑でない限り)、ユーザーは気づくべきではありません。 JSスレッドが終了するとブラウザは再描画を行います。これはすでに描画された画面と同じです。 – Amadan

2

次の代わりにお試しください。 window.loadはドキュメント要素を処理する良い方法ではありません。

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

同じクラスの要素が複数ある場合は、最初の要素のみが取得されます。

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

または代わりにあなたが

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

答えと努力を感謝する時間を信用してください。 – Tauseef

+0

はい、私が理解していることは、クラス名を繰り返さないことです。もう1つの問題は、displayプロパティをnoneに設定したことです。お疲れ様でした。 – Ram

+0

@ user2425218クラスを定義する目的は、多くの要素でクラスを繰り返すことです。隠し要素は、イベントやプロパティを出力しません。あなたは実際に '$(document).ready(...)'を使用するべきです – Tauseef

関連する問題