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当您说:

$(".exercise .nested-fields")

您需要分别考虑每一个.exercise。一种简单的方法是将选择器分成两半并使用嵌套循环:

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 回答