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

Chr*_*ele 5 javascript shortcut coffeescript

我的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
Run Code Online (Sandbox Code Playgroud)

我做了大约3个错别字$(@).一次又一次地进入's,这变得很痛苦.

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

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

ben*_*ich 8

功能链如何:

$('.iterable.object').each ->
  $(@)
    .doThis()
    .doThat()
Run Code Online (Sandbox Code Playgroud)

或者存储$(@)到变量:

$('.iterable.object').each ->
  t = $(@)
  t.doThis()
  t.doThat()
Run Code Online (Sandbox Code Playgroud)

或两者的结合.我能想到的最后一件事是IDE片段,例如textmate会让你配置字母+ TAB替换为$(@).