0

私はこのマークアップを持っています:

<div class="cntr">
  <ul>
      <li class="frst_lvl" style="width: 125px;">
         <ul>
           <li class="scnd_lvl" style="width: 25px;"></li>
           <li class="scnd_lvl" style="width: 25px;"></li>
           <li class="scnd_lvl" style="width: 25px;"></li>
         </ul>
      </li>
      <li class="frst_lvl" style="width: 125px;"></li>
      <li class="frst_lvl" style="width: 125px;"></li>
      <li class="frst_lvl" style="width: 125px;"></li>
  </ul>
</div>

すべての要素の幅を class と組み合わせる必要がありますfrst_lvl。私はこの関数を使用しますが、.each()メソッドはすべての要素の幅を取得しscnd_lvlます。これを正しく書く方法は?

var t = 0,
    $cntr = $('.cntr'),
    $list = $cntr.find('> ul'),
    $list_el = $list.find('> li');

function listWidth() {
    var total = t;
    $list_el.each(function() {
        total += parseInt($(this).width());
    });
    return total;
}
$list.width(listWidth());

Thx、助けて。

4

2 に答える 2

0

これにより、クラスを持つすべての要素の合計幅が得られますfrst_lvl

$( document ).ready(function() {
    $width = 0;
    $( ".frst_lvl").each(function( index ) {
        $width += parseFloat($(this).width());
    }); alert($width);
});
于 2013-09-30T06:58:44.583 に答える
-1

$.find は、一致するすべての子孫を返します。あなたの例では、 $list には 2 つのリストが含まれ、 $list_el には 7 つの項目が含まれています。

代わりに $.children メソッドを使用してください。DOM 内で 1 レベルだけ下に移動する

$list = $cntr.children('> ul'), $list_el = $list.children('> li');

ここのドキュメントを参照してください: http://api.jquery.com/children/

于 2013-09-16T21:31:33.797 に答える