2

つまり、jQueryとDOMを使用して要素を作成する場合です。

var MainHolder = $(document.createElement("div")).addClass("box");

ウィンドウに要素を描画せずに呼び出す場合MainHolder.width()、それはクリーバーであり、CSSクラスから幅を取得することを.box確認しますか、それとも描画されないために0を返すため、処理できませんか?

4

4 に答える 4

5

要素を描画し、幅を取得して、描画を解除できます。

var MainHolder = $(document.createElement("div")).addClass("box").css({
    position: "absolute",
    left: -9999
}).appendTo("body");

var width = MainHolder.width();

MainHolder.css({
    position: "static",
    left: "auto"
}).detach();
于 2012-07-17T13:16:21.823 に答える
2

jQuery.width()を使用すると、HTMLドキュメント内の要素の幅のみを取得できます。

以下の例では、CSSの幅を次のように設定しています200px

HTML本文に追加されていない例-0を返します

HTML本文に追加した場合の例-200を返します

これの主な理由は、またはなどのルールがある場合box、要素に適用してルールを探すこと.boxが機能しないためだと思います。jQueryは、この要素がどの幅になるかを理解するために、この要素がドキュメント内のどこに属するかを知る必要があります。.container .box.container2 .box

于 2012-07-17T13:15:34.647 に答える
0

Jqueryは、描画されていない要素の幅をフェッチできません。

以前に行ったことは、要素の上マージンを-1000に設定し、位置を絶対に設定し、幅と高さを取得してから、上マージンを右に設定することです。

于 2012-07-17T13:15:13.433 に答える
0

私の意見で$.hide()は、この目的のために CSS の配置よりも優れています。の要素はleft: -9999、他の CSS スタイルによっては引き続き表示される可能性があります。

$('<div></div>').addClass('box').hide().appendTo('body').width()

jsfiddle

于 2015-01-07T07:39:04.370 に答える