迭代coffeescript中的jQuery DOM元素:$(@)。捷径

时间:2012-08-07 18:47:42

标签: javascript coffeescript shortcut

我的coffeescript中有很多循环遍历DOM元素集合,并执行更多jQuery。这些功能看起来像这样:

$('.iterable.object').each ->
    $(@).doThis
    $(@).doThat

    ## More complicated usage
    $(@).jqueryPluginCall
        x: $(@).data('attr1')
        x: $(@).data('attr2')

    ## More complicated usage
    $(@).children('ul.animateable').each ->
        if $(@).data('animation') is "fancy"
            $(@).animate fancy: animation
        else
            $(@).animate simple: animation
        $(@).focus(
            ->
                $(@).animate some: more
            , ->
                $(@).animate even: more
        ) ## Or however you do double callbacks

我一次又一次地进入了{3}的错误,而且它变得很痛苦。

$(@).没有快捷语法?输入有点痛苦,似乎是一种非常常见的语法。如果它与$(@)作为自动函数调用者的操作类似于@而不是&doThis,那就太酷了。

编辑: 我希望能够在jQuery加载后在javascript中定义别名,在调用&.doThis时调用DOM元素并链接到方法&,而不是在每个循环的顶部@bennedich建议如下。

1 个答案:

答案 0 :(得分:8)

功能链如何:

$('.iterable.object').each ->
  $(@)
    .doThis()
    .doThat()

或将$(@)存储到变量中:

$('.iterable.object').each ->
  t = $(@)
  t.doThis()
  t.doThat()

或两者的结合。我能想到的最后一件事是IDE片段,例如textmate将允许您将字母+ TAB替换为$(@)