我的意思是,如果我創建一個jQuery和DOM可以jQuery的獲取尚未繪製的動態元素的大小
var MainHolder = $(document.createElement("div")).addClass("box");
一個元素,如果我是叫MainHolder.width()
沒有窗口繪製元素它會變得更聰明,並得出它從.box
CSS類的寬度,或者它只是返回0,因爲它沒有被繪製,所以它不能解決它?
我的意思是,如果我創建一個jQuery和DOM可以jQuery的獲取尚未繪製的動態元素的大小
var MainHolder = $(document.createElement("div")).addClass("box");
一個元素,如果我是叫MainHolder.width()
沒有窗口繪製元素它會變得更聰明,並得出它從.box
CSS類的寬度,或者它只是返回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();
謝謝這是最完整的答案 – HotHeadMartin 2012-07-17 13:43:29
Jquery無法獲取未繪製的元素的寬度。
我之前做過的事情是將元素的頂部邊距設置爲-1000,並將位置設置爲絕對值,然後獲取寬度和高度,然後將頂部邊距設置爲正確。
使用jQuery .width()
您只能獲取HTML文檔中元素的寬度。
在我的例子下面我給自己定的CSS寬度200px
:
Example without appended to HTML body - returns 0
Example when appended to HTML body - returns 200
我相信這種情況的主要原因是在應用box
的元素和期待對於.box
規則,如果您有諸如.container .box
或.container2 .box
的規則,則不起作用。 jQuery需要知道該元素在文檔中的位置,以瞭解它將具有的寬度。
在我看來,$.hide()
比CSS定位爲達到更好的效果。具有left: -9999
的元素可能仍然可見,具體取決於其他CSS樣式。
$('<div></div>').addClass('box').hide().appendTo('body').width()
難道你還沒有自己嘗試過嗎? http://jsfiddle.net/uk3wU/(答案是它返回0)。 – Matt 2012-07-17 13:14:45
我打算,但我雖然我會先搜索,但它不在這裏,所以我雖然這將是有用的答案在網站上:) SEO和所有 – HotHeadMartin 2012-07-17 13:26:38