0

$(el).css() を使用してサイズを変更した後、要素のサイズを取得することは可能ですか?

私のコードは次のとおりです。

function resize() {
    $(".combobox").css('width', '100%');
    var width = $(".combobox").width();
}

関数をもう一度呼び出した後でのみ、コンボボックスの実際の値を取得しました。最初は $(".combobox").css('width', '100%'); を実行する前に幅を取得します。

これは、.css() の後に DOM が再作成されないことが原因だと思います。DOM のリロードを強制する方法はありますか?

前もって感謝します!

4

2 に答える 2

1

幅を取得するコードの一部を、1 ミリ秒にスケジュールされたタイマーに入れてみてください...

スクリプトの実行中、ブラウザーはサイズ変更の計算を行いません。タイマーをスケジュールして JS 関数を終了すると、ブラウザーは変更されたすべての DOM 要素の状態を更新してからタイマーを起動するため、それまでにコンボボックスの幅が更新されます。

GWTベースのWebページで非常によく似たものを使用しました

このトリックは、JS だけでなく、レイアウトを遅延させる多くの GUI フレームワークでも機能します。

于 2010-04-15T07:43:44.420 に答える
0

2 つの関数をチェーンしてみてください。

function resize() {
    var width = $(".combobox").css('width', '100%').width();
}
于 2010-04-15T07:33:46.607 に答える