- ベストアンサー
jQueryの要素選択について
例えば、 <ul id="list"> <li style="width: 100px;">リスト1</li> <li style="width: 200px;">リスト2</li> <li style="width: 300px;">リスト3</li> </ul> というHTMLの、liのwidthの合計をjQueryを使って求めるには、どうすれば良いでしょうか? for( prop in $("ul#list li") ) { width_sum += prop.width(); } こんな感じだと思っていたのですが・・・うまくいきません。 Javascript初心者です。 「その前に○○を勉強した方がいいよ」などのアドバイスはお控えいただいて、純粋に解答のみを教えていただければ幸いです。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
eachを使った方法で。 http://semooh.jp/jquery/api/core/each/callback/ var width_sum = 0; $('#list li').each(function(){ width_sum += $(this).width(); }); liを浮動化させてあって#listの幅を得たいなら算出するより#listを浮動化させて直に#listの幅を求める方法もある。 $('#list').css('float','left');//浮動化 width_sum = $('#list').width(); $('#list').css('float','none');//戻す 浮動化させる事により#listの幅は内容の合計になる。liにマージンを付けたり#listにpaddingを付けたりするならコッチのほうが楽そう。
その他の回答 (2)
- think49
- ベストアンサー率59% (285/482)
#2です。 大きな勘違いをしていました。#2は流してください…。 大変失礼いたしました。m(_ _)m
- think49
- ベストアンサー率59% (285/482)
> というHTMLの、liのwidthの合計をjQueryを使って求めるには、どうすれば良いでしょうか? ノード数を算出したいのなら、lengthプロパティが使えます。 どうしてもDOMを使いたくないというなら別ですが、個人的にはあえてjQueryにこだわる必要はない気がします。 alert($("ul#list>li").length); element.length - MDC https://developer.mozilla.org/ja/DOM/element.length
お礼
どうやら基本的な関数を見落としていたようです…… eachの方法で成功いたしました。 ご回答、ありがとうございました。