我如何在coffeescript中编写这个jQuery?

时间:2011-09-15 12:00:11

标签: javascript jquery coffeescript

只是想学习并混淆如何做以下事情。谢谢!

$.each($(".nested-fields"), function(intIndex) {$(this).find(".set").html(intIndex+1);;} );

再次感谢你。

3 个答案:

答案 0 :(得分:20)

原始javascript可以(或应该)写成:

$('.nested-fields').each(function(i){
  $(this).find('.set').html(i+1)
})

所以

$('.nested-fields').each (i) ->
  $(this).find('.set').html i+1

更易读的版本可能如下所示:

fields = $('.nested-fields')

for field, i in fields
  set = $(field).find('.set')
  set.html i+1

$(field).find('.set').html i+1 for field in fields

答案 1 :(得分:3)

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

(这使用for(;;)循环遍历数组。)

或者如果你想使用$ .each:

$.each $(".nested-fields"), (i) ->
    $(this).find('.set').html(i+1)
是的,标题有点不正确;应如何在Coffeescript中编写此Javascript ;)

答案 2 :(得分:0)

就个人而言,我喜欢coffeescrip的for .. in ..,但是我很无聊使用以下结构将迭代器作为JQuery对象:

for td in $('td.my_class')
    $td = $(td)
    ..

所以我定义了一个可用于每个JQuery对象的items函数:

$.fn.items = -> $.map(this, $)

现在使用coffeescript导航更简单:

for $td in $('td.my_class').items()
    $td <-- is a JQuery object