9

次のような標準 UL があります。

<ul>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
  <li><a href="">Link</a></li>
</ul>

すべての LI タグの組み合わせを計算するための迅速で効率的な方法を見つけようとしています。現在私は持っています:

var width = 0;

$('ul li').each(function() {
 width += $(this).outerWidth();
});

ループを使用せずに同じ結果を得るためのより迅速な方法があるかどうか疑問に思っていますか?

ご協力いただきありがとうございます!

4

3 に答える 3

5

あなたが求めているものを正確に得るために、いいえ、ありません。これは、既存の関数にうまく適合するケースではありません。あなたが持っているようなループが最も速い方法です。コアに何かを入れるという話があり.childWidth()ます...しかし、私は息を止めません:)

他の答えには、余分なスペースを含む親の幅が含まれますが、それは通常、あなたが求めているものではないので、今のところ...あなたが持っているようにループに固執してください。追加される短いものは、とにかくその下で同じ量の作業を行うことがほぼ保証されます (おそらく同じコードも同様です)。

于 2010-06-17T10:48:18.833 に答える
0

ul 要素自体の幅を取得することもできますが、それでは黒丸と余白を含めた幅が得られます。

var width = $("ul").outerWidth();
于 2010-06-17T09:56:50.603 に答える
0

これがメニューで、項目が互いに隣り合っている (下にない) 場合は、 を試してください$('ul').outerWidth()

[編集] の幅ulが固定されている場合は、リストの最後の要素を見つけて、その右オフセットを見てください。オフセットは常に親要素に対して相対的であるため、すべての子要素の合計幅を追加offsetLeftして取得するだけです。offsetWidth

于 2010-06-17T09:57:11.570 に答える