• ベストアンサー

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初心者です。 「その前に○○を勉強した方がいいよ」などのアドバイスはお控えいただいて、純粋に解答のみを教えていただければ幸いです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

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を付けたりするならコッチのほうが楽そう。

noname#113749
質問者

お礼

どうやら基本的な関数を見落としていたようです…… eachの方法で成功いたしました。 ご回答、ありがとうございました。

その他の回答 (2)

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

#2です。 大きな勘違いをしていました。#2は流してください…。 大変失礼いたしました。m(_ _)m

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

> というHTMLの、liのwidthの合計をjQueryを使って求めるには、どうすれば良いでしょうか? ノード数を算出したいのなら、lengthプロパティが使えます。 どうしてもDOMを使いたくないというなら別ですが、個人的にはあえてjQueryにこだわる必要はない気がします。 alert($("ul#list>li").length); element.length - MDC https://developer.mozilla.org/ja/DOM/element.length

関連するQ&A