2010-04-15 68 views
0

使用$(el).css()調整大小後可以獲取元素的大小嗎?在調整大小後獲取元素的寬度

我的代碼是:

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

我已經得到了組合框的實際價值只有調用函數的第二時間之後。第一次在執行$(「。combobox」)之前獲取寬度。css('width','100%');

我想這是在.css()後沒有重新創建DOM的錯誤。有什麼辦法強制DOM重裝嗎?

在此先感謝!

回答

1

嘗試把該得的寬度定於1毫秒的定時器代碼的一部分...

的瀏覽器不會做調整大小腳本執行時的計算。如果您計劃一個計時器並退出JS函數,瀏覽器將更新所有已更改的DOM元素的狀態,然後啓動計時器,屆時您的組合框的寬度已更新。

我曾經在一個基於GWT網頁

這一招不但可以用於JS,但在許多GUI框架,它做佈局延遲的方式非常類似。

+0

這確實奏效,我必須使用500毫秒的延遲才能正常工作。少於這一點不起作用。謝謝! – infinito 2010-04-15 08:45:01

+1

我用過: function resize(){(「。combobox」)。css('width','100%'); setTimeout(resize2,500); } function resize2(){ var width = $(「。combobox」)。width(); .... } – infinito 2010-04-15 08:47:43

0

嘗試鏈接的兩個功能:

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

應該完全一樣。因此,它對我來說都很好。 – jAndy 2010-04-15 07:41:58

+0

這不適合我。 – infinito 2010-04-15 08:45:55

相關問題