2012-01-18 12 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がそのようである:それは0を返す理由

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

私は理解することはできませんので、私の 'UL' 対応 'H4' より常に小さいです。私は 'h4'幅はパーセント値を使ってCSSで設定されていると言わなければなりません。

EDIT:このコードは、非表示のdiv(私がモーダルポップアップとして使用する)の中にある場合にのみ発生します。それ以外の場合は、期待どおりに動作します!

ありがとう!

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

+0

は、あなたもあなたのhtmlをしてください投稿できます動作するはず? :) –

+0

はい、申し訳ありません!それは1分以内に来る! :) – Alessandro

+0

これは非常に複雑なやり方のようですが、より良い方法が必要です。 –

答えて

1

変更

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

そして、それは

+0

それは:http://jsfiddle.net/feeela/QPMjQ/1/ – feeela

+0

それは計算された値を見るためのブレークポイントに過ぎず、常に0を返します。私は本当に理由を理解できません。申し訳ありませんが、最初の投稿で私のEDITを読んでください。 – Alessandro

+0

しかし、それはどこですか?なぜなら、その特定の行では0ではないから、戻って他の場所にその値を送るのを見ることができないからです。その値を他の場所にキャッチしようとすると、それ以外の場合は0が返されます永遠に –

関連する問題