coffeescript,jquery中的每个循环

时间:2011-10-20 08:11:38

标签: javascript jquery coffeescript each

我是javascript的新手并且一起开始混合javascript + jquery + coffeescript对于像我这样的新手来说并不容易......

我创建了一个非常简单的可排序列表,我想动态重新编号我的列表(服务器端代码没问题)。

我写的coffeescript代码是:

jQuery ->
  $('.simple_grid tbody').sortable
    axis: 'y'
    containment: 'parent'
    cursor: 'move'
    tolerance: 'pointer'
    update: (event,ui)->
      $.post($(this).attr('dataupdateurl') + '/' + ui.item.attr('id') + '/reorder/' + ui.item.index())
      $('tr > td > a > span.number').each (i, element)  =>
      $(element).html i

这会生成一个这样的表

<table class= "simple-grid">
   <tbody dataupdateurl = "xxx">
      <tr>
         <td>
            <a href="some_link"><span class="number">1</span>text 1</a>
         </td>
          <td>
            <a href="some_link"><span class="number">2</span>text 2</a>
         </td>
        <td>
            <a href="some_link"><span class="number">3</span>text 3</a>
         </td>
      </tr>
   </tbody>
</table>

我正在尝试重新编号更新回调触发时span.number元素内的内容,但我收到以下错误消息:

  

元素未定义

非常欢迎任何帮助!谢谢!

更新:问题是由于我错过了最后一个函数中的缩进:

$('span.number').each (i, element)  =>
      $(element).html i

1 个答案:

答案 0 :(得分:4)

我不知道咖啡脚本,但一般使用jQuery选择器不需要完整路径。 例如$('tr > td > a > span.number')可以重写为$('.number'),而.each()通常用作.each(function(index, element) { YOUR CODE });。看起来不合适的最后一件事是设置html,这通常是.html('value')。所以在你的情况下$(element).html(i);。希望这有帮助吗?