2009-09-18 12 views
9

私はpageloadとウィンドウのサイズを変更するdivのサイズを変更しようとしています。コードは</body>の前に配置され、pageloadでは正常に動作しますが、ウィンドウのサイズ変更は行われません。私はサイズ変更機能を、サイズ変更時にトリガーするアラートでテストしましたが、高さは変更されません。jQuery - 動的なdivの高さ

<script type='text/javascript'> 
    $('#main-content') .css({'height': (($(window).height()) - 361)+'px'}); 

    $(window).resize(function(){ 
     $('#main-content') .css({'height': (($(window).height()) - 361)+'px'}); 
     alert('resized'); 
    }); 
</script> 

更新:長い休憩の後、私は問題の原因を発見しました。私はサイズ変更されている同じdivにスタイル付きスクロールバーを追加するjqueryスクリプトを使用しています。私がコメントアウトすると、すべてがうまくリサイズされます。私はresizeと同じ関数でスクロールバーの初期化を移動し、私が考えることができる任意のバリエーションを試して..まだそれを動作させることはできません。

(#メイン・コンテンツのdiv要素も持っている.scrollペインクラス)ウィンドウのサイズが変更された後、ウィンドウのリサイズ機能だけ、一回発射していること

<script type='text/javascript'> 
$(function(){ 
    $('#main-content').css({'height':(($(window).height())-361)+'px'}); 
    $('.scroll-pane').jScrollPane({scrollbarWidth:15, scrollbarMargin:15}); 

    $(window).resize(function(){ 
      $('#main-content').css({'height':(($(window).height())-361)+'px'}); 
    }); 
}); 
</script> 

答えて

14

解決済み!

高さを計算して再適用する前に、jScrollPaneを削除するだけでした。

<script type='text/javascript'> 
$(function(){ 
    $('.scroll-pane').css({'height':(($(window).height())-361)+'px'}); 
    $('#main-content').jScrollPane({scrollbarWidth:15, scrollbarMargin:15}); 

    $(window).resize(function(){ 
      $('.scroll-pane').jScrollPaneRemove(); 
      $('#main-content').css({'height':(($(window).height())-361)+'px'}); 
      $('.scroll-pane').jScrollPane({scrollbarWidth:15, scrollbarMargin:15}); 
    }); 
}); 
</script> 
+0

ちょっと、私のアプリでdivの動的な高さを作ろうとしていて、私はあなたのコードを使用しました(私はちょうどスクロールペインについてstufを削除しました)。 :)良い解決策。 – user1080533

+0

'Uncaught TypeError:$(...)。jScrollPaneは関数ではありません。 '... Whats' jScrollPane'?そのプラグイン? – KingRider

5

注意。サイズ変更操作中には更新されないので、ウィンドウ枠をドラッグしてこれをテストすると、マウスボタンを離す前に変更は行われません。

<script type='text/javascript'> 
$(function() 
{ 
    $('#main-content') .css({'height': (($(window).height()) - 361)+'px'}); 

    $(window).resize(function(){ 
     $('#main-content') .css({'height': (($(window).height()) - 361)+'px'}); 
     alert('resized'); 
    }); 
}); 
</script> 

ここworking demoは次のとおりです。

また、あなたはこのように、$(document).ready()以内にこれを行うことを確認してください。

+0

対象を明確にしてくれてありがとうございますが、まだ問題は解決していません。 コードを使用すると、サイズ調整が読み込み時またはサイズ変更時に機能しません。あなたの例が完璧に機能するので、私はなぜ考えていません! 何が干渉しているかもしれないという考えがある場合は、返信してください。 – lemon

+0

@lemon、IEでこれをテストしていますか? IEのCSS高さメソッドでdivのサイズを変更する際に問題が発生しました。*解決策は、divのデフォルトの高さを定義することです。 –

+0

ウィンドウのサイズ変更イベントは、ブラウザによって異なる間隔で発生します。私の経験では、少なくとも古いバージョンのIEでは、可能なすべてのサイズ変更アクション(そしていくつか)のために起動します。Firefoxでは利用可能なリソースに基づいてイベントを抑制し、Safariでは一定間隔で、アクションに応じて200ms(Firefoxのモデルに似ていますが、発生頻度はそれほど高くありません)。 – eyelidlessness

1

ドキュメントの高さがウィンドウの高さ以下でない限り、関数を実行しないでください。

$(function() { 
    if($(document).height() <= $(window).height()) { 
    $('#wrapper').css({ 'height': ($(window).height()) }); 
    $(window).resize(function(){ 
     $('#wrapper').css({ 'height': ($(window).height()) }); 
    }); 
    } 
}); 

コンテンツがdivの外に流れ出す問題がありました。

関連する問題