1

私は次のコードを持っています:

countSetNumbers = ->
  for field, i in $(".exercise .nested-fields")
    set = $(field).find('.set')
    set.html(i+1)

問題は、複数の.exercise divがあり、各エクササイズがセット番号の量で分離されているのではなく、すべてのエクササイズをまとめてカウントしていることです。したがって、演習1に3つのセットがあり、演習2に1がある場合、演習2の最初のセットには。というラベルが付けられ4ます。それぞれが一意にカウントされるようにするにはどうすればよいですか?

4

1 に答える 1

1

あなたの問題は、あなたが.nested-fields言うとき、あなたがすべての要素を1つの山にマッシュアップしているということです:

$(".exercise .nested-fields")

.exerciseそれぞれを個別に検討する必要があります。これを行う簡単な方法の1つは、セレクターを半分に分割し、ネストされたループを使用することです。

countSetNumbers = ->
  for ex in $('.exercise')
    for nf, i in $(ex).find('.nested-fields')
      $(nf).find('.set').html(i + 1)

これは、次のようなHTML構造を想定しています。

<div class="exercise">
    <div class="nested-fields">
        <div class="set"></div>
    </div>
    <!--...-->
</div>
<!--...-->

デモ: http: //jsfiddle.net/ambiguous/LekpV/

jQueryスタイルで行うこともできます。

countSetNumbers = ->
  $('.exercise').each ->
    $(@).find('.nested-fields').each (i) ->
      $(@).find('.set').html(i + 1)

デモ: http: //jsfiddle.net/ambiguous/Au7rs/1/

于 2013-03-15T06:05:43.890 に答える