2011-07-17 12 views
6

レイアウトの複雑なデザインのため、基本的にレイアウト内の複数のdivを見て、最高のものを選んでequalHeightsという関数を作成しました。その高さはそれに等しいので、私は同じ高さのdivで終わることができます。だから、基本的にページが読み込まれた後、コードを見ると、style = "height:xxx"が各divに適用されます。これを変更することはできませんので、どのソリューションでもこの機能に触れることはできません。jQueryでdivの高さを検出して変更する方法

divもオーバーフローがhiddenに設定されています。これは再び目的を持ち、変更できません。

したがって、私がする必要があるのは、ユーザーのインタラクティブ性による変更に基づいてdivの高さを変更できることです。たとえば、ユーザーがリンクをクリックすると展開される非表示の行があるテーブルがあります。テーブルの余分な長さは、オーバーフローのために隠されます、私は拡大するdivのサイズが必要です。同時に、この拡張を特定のクリックにバインドしたくないので、Javascriptでコンテンツの変更を検出し、それに応じてdivを拡張します。そのようにバインドしたくない理由は、同じレイアウトの別のページに実装する必要があり、すべてのイベントをコーディングしたくないからです。

私は両方試してみました:

$("#myDiv").content().resize(function(){ 
    equalHeight($("#myDiv")); 
}); 

どちら

$("#myDiv").resize(function(){ 
    equalHeight($("#myDiv")); 
}); 

を動作するようです!何か案は?

答えて

8

基本resizeイベントは$(ウィンドウ)にバインドすることができますが、DIVにresizeイベントをバインドすることができるようにしたい場合は、プラグインを使用する必要があります。

http://benalman.com/projects/jquery-resize-plugin/

+0

場合や

http://jsfiddle.net/JKByC/7/

その1オフの事あなたには、いくつかの小さな間隔でタイマーの要素の高さを監視し、変更を見つけたときにコールバック関数をトリガし、独自のプラグインを作成することができます。 – Nitin

0

設定された行数が表示されていると仮定すると、それ以上の数を確認して、それに応じてdivをスタイルすることができます。

1

することができます関数内で独自のdivイベントをトリガーします。したがって、クリック機能を書き直すことはありません。

+0

回答自体にコードを含める必要があります。しかし、これは素晴らしい考えです。あなたが知っている関数内のイベントをトリガーして、divのサイズ変更を引き起こし、そのイベントをキャッチします。 – Andrew

0
 var last_height = $('#div').css('height'); 

     $(window).resize(function() { 
      if($('#div').css('height') != last_height) 
      { 
       last_height = $('#div').css('height'); 
       //do what you want 
      } 
     }); 
+0

投稿の説明を追加します。あなたの投稿が特定の質問の答えなのはなぜですか?コードだけでは不十分です。 「良い答えを書くにはどうすればいいですか?」(http://stackoverflow.com/help/how-to-answer)を参照してください。 – Shashanth

関連する問題