2012-04-26 11 views
1

joomlaサイトに読み込んでいるウェブサイトの別の部分をiframeで作成しましたが、iframeのコンテナの高さを調整します。以前に設定したときにJqueryの高さが正しくない

したがって、私は(iframeの内側からこれを呼び出す)正常に動作し、次のコードで私のhtmlの高さを取得しようとしています:

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

高さはすべてのページで正しく警告されます。

iframeコンテナの高さを調整すると問題が発生します。私はこのコードを使用する場合:

$(document).ready(function() { 
    var height = $(document).height(); 
    alert(height); 
    parent.document.getElementById('blockrandom').style.height = height + 'px'; 
}); 

は今、高さが同じか、以前の高さよりも大きくなりますので、あなたは500pxなどのいずれかに900pxの高さページから行くときの高さは、(で900pxのままになりますアラートも同様)。小さなものから大きなものまで、うまく動作します。

ありがとうございます!

+0

jqueryを使用している場合は、 $( "#blockrandom")だけ使用できます。 –

+0

あなたのご意見ありがとうございますが、それは残念なことにteの問題を解決しません。私がこれを行うと、リサイズはこれ以上動作しません。 – Mike

答えて

0

はい、高さが調整されたら、ネイティブプロパティまたはjQueryを使用しても差がないことがわかりました。結果の高さ値は、新しい値セットを反映するようには見えません。したがって、同じページのやり取り中に要素を動的に調整するには、これまで高さのヒューリスティックに頼らざるを得ませんでした。

最終的に、要素内のコンテンツを評価し、完全ではないにしても許容できるプロキシ高さ値を構築します。たとえば、22個のラベルフィールドの元のセットを持つボックスがあるとします。

ユーザーが親の値またはオプションの調整として、私は0と全22

間の結果のフィールドの任意の数で終わる可能性があり、私はいくつかのユーザイベントの後に10の左を持っているのであれば、私はその機能を実行します可視要素をカウントアップして高さを計算します。したがって、10フィールド×22ピクセルは、含まれる要素を約220ピクセルに再調整することを意味します。

具体的には、私は、デフォルトの高さ、ベースの高さ(テキスト/命令のような、いつも露出していない調整可能な要素のいくつかを可能にする)、および要素の高さの乗数を割り当てる抽象関数を持っています。

イベント時とロード時に、要素コンテナをデフォルトの高さに設定しました。可変要素を数えた後、可変要素に乗数を掛けてそれを基底の高さに加えて値を計算します。

これまでのところ私ができることは最高ですが、かなり簡単です。 jQueryセレクタを使用すると、カウントするのに数行しかかかりません。また、高さを計算して設定するにはさらに数行が必要です。

NB:これは、コンテンツから高さを自動的に調整しない要素にのみ必要です。これの最大の犯罪者はjQueryタブです。私の場合、この問題が発生します。ほとんどの操作されていない相対高さ要素は、display = block || noneの間で要素が切り替わると自動的にスペースを調整します。

ここ

は、いくつかのサンプルコードです:

setElemHeight = function(options) { 
    var _elem = options.containerElement; 
    var _nBase = options.nBaseHeight; 
    var _nMltplr = options.nMultiplierHeight; 
    // COUNT ROWS 
    var _nCnt = 0; 
    $('#' + _elem.id + ' div div:first-child > input').each(function() { 
     if(this.style.display != 'none') _nCnt++; 
    }); 
    $(_elem).height(_nBase + (_nCnt * _nMltplr)); 
} 

私は自分の目的のために十分に抽象化しましたが、あなたは少し遠くので、セレクタの子要素が動的でそれを取ることができます。

関連する問題