我的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建议如下。
答案 0 :(得分:8)
功能链如何:
$('.iterable.object').each ->
$(@)
.doThis()
.doThat()
或将$(@)
存储到变量中:
$('.iterable.object').each ->
t = $(@)
t.doThis()
t.doThat()
或两者的结合。我能想到的最后一件事是IDE片段,例如textmate将允许您将字母+ TAB替换为$(@)
。