つまり、jQueryとDOMを使用して要素を作成する場合です。
var MainHolder = $(document.createElement("div")).addClass("box");
ウィンドウに要素を描画せずに呼び出す場合MainHolder.width()
、それはクリーバーであり、CSSクラスから幅を取得することを.box
確認しますか、それとも描画されないために0を返すため、処理できませんか?
要素を描画し、幅を取得して、描画を解除できます。
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();
jQuery.width()
を使用すると、HTMLドキュメント内の要素の幅のみを取得できます。
以下の例では、CSSの幅を次のように設定しています200px
。
これの主な理由は、またはなどのルールがある場合box
、要素に適用してルールを探すこと.box
が機能しないためだと思います。jQueryは、この要素がどの幅になるかを理解するために、この要素がドキュメント内のどこに属するかを知る必要があります。.container .box
.container2 .box
Jqueryは、描画されていない要素の幅をフェッチできません。
以前に行ったことは、要素の上マージンを-1000に設定し、位置を絶対に設定し、幅と高さを取得してから、上マージンを右に設定することです。
私の意見で$.hide()
は、この目的のために CSS の配置よりも優れています。の要素はleft: -9999
、他の CSS スタイルによっては引き続き表示される可能性があります。
$('<div></div>').addClass('box').hide().appendTo('body').width()