2012-01-18 53 views
0

我有一個使用JQuery的問題。我正在編寫一個函數,根據前一個兄弟的寬度(這是一個'h4')動態調整絕對定位'ul'寬度的大小。該代碼是:使用JQuery設置和檢索寬度

$(this).children('h4').each(function (i) { 
    var beforeWidth = $(this).width(); // This reads for example 234 
    $(this).next().width($(this).width()); // This should set the width 
    var afterWidth = $(this).next().get(0).clientWidth; // This returns always 0 
}); 

HTML是這樣的:

<div style="width: 30%;"> 
    <h4>title</h4> 
    <ul style="position: absolute;"> 
     <li>item 1</li> 
     <li>item 2</li> 
    </ul> 
</div> 

我不明白爲什麼它返回0,所以我的 'UL' 總是比相應的 'H4' 小。我不得不說,'h4'寬度是使用百分比值在CSS中設置的。

編輯:我應該說,只有當這段代碼是在一個隱藏的div(我用作模式彈出)時纔會發生這種情況。否則它按預期工作!

謝謝你們!

+0

你可以發佈你的HTML太好嗎? :) – 2012-01-18 10:24:10

+0

是的,對不起!它在一分鐘內即將到來! :) – Alessandro 2012-01-18 10:24:40

+0

這似乎是一個非常複雜的做事方式,必須有更好的方法。 – 2012-01-18 10:26:27

回答

1

變化

var afterWidth = $(this).next().get(0).clientWidth; 

var afterWidth = $(this).next().width(); 

,它應該工作

+0

它的確如此:http://jsfiddle.net/feeela/QPMjQ/1/ – feeela 2012-01-18 10:35:44

+0

這只是一個觀察計算值的斷點,它總是返回0.我真的不明白爲什麼。對不起,在第一篇文章中閱讀我的編輯。 – Alessandro 2012-01-18 10:35:59

+0

但是它在哪裏0呢?因爲在特定的線上它不是0,我不能看到你通過返回將它的價值發送到任何其他地方。所以如果你試圖在其他地方捕獲值,你將不得不首先返回它,否則它永遠是0 – 2012-01-18 10:37:58