Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在coffeescript:$(@)中迭代jQuery DOM元素。捷径_Javascript_Coffeescript_Shortcut - Fatal编程技术网

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

Javascript 在coffeescript:$(@)中迭代jQuery DOM元素。捷径,javascript,coffeescript,shortcut,Javascript,Coffeescript,Shortcut,我的coffeescript中有很多循环,它们在DOM元素集合上迭代,并执行更多的jQuery。这些函数通常如下所示: $('.iterable.object').each -> $(@).doThis $(@).doThat ## More complicated usage $(@).jqueryPluginCall x: $(@).data('attr1') x: $(@).data('attr2') ##

我的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
而不是
&doThis
,那就太酷了

编辑:
我希望能够在jQuery加载后,在javascript中定义一个别名,当调用
&
并链接到方法
&doThis
,而不是像@bennedich建议的那样在每个循环的顶部。函数链接如何:

$('.iterable.object').each ->
  $(@)
    .doThis()
    .doThat()
或将
$(@)
存储到变量:

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

或者两者的结合。我能想到的最后一件事是IDE代码片段,例如,textmate将允许您将字母+选项卡配置为
$(@)

可能我只是年纪大了,但
$(@)
已经相当简洁了……我有点挑剔。我有很多这样的人。(500+)不应该是
$('.iterable.object')。each->…
?人们往往会忘记这一点,通常是
$(“foo”)。each(function(){$(this.bar();})
与刚才的
$(“foo”).bar()相同。这不是你的情况吗?我实际上在循环中执行更复杂的CS。这是一个示例,但我将更新以演示一层复杂性。就我个人而言,如果我要多次使用jquery对象,我总是通过将其放入变量来缓存它。提高性能和可读性+1我猜
@
this
)已经作为变量缓存在循环的作用域中,但重复将其处理到jQuery DOM元素(
$(@)(
)中不是吗?假设方法返回jQuery元素,则可以在一行中执行
$('.iterable.object')->t=$(@).doThis().doThat()