5

我的咖啡脚本中有很多循环,它们遍历一组 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代替&.doThis.

编辑:我希望能够在 jQuery 加载后在 javascript 中定义一个别名,该别名在调用时响应 DOM 元素&并链接到 methods &doThis,而不是像@bennedich 下面建议的那样在每个循环的顶部。

4

1 回答 1

8

函数链如何:

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

或存储$(@)到变量:

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

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

于 2012-08-07T19:16:02.097 回答