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

何度も何度もタイプミスを入れて$(@).しまい、苦痛になりつつあります。

$(@)?のショートカット構文はありません。入力するのはちょっと面倒で、かなり一般的な構文のようです。の代わりに@、自動化された関数呼び出し元と同じように動作するのであれば、すばらしいでしょう。&doThis&.doThis

編集: @bennedichが以下に提案するように、各ループの先頭ではなく、呼び出されたときにDOM要素で応答し、&メソッドにチェーンするjQueryの読み込み後にjavascriptでエイリアスを定義できるようにしたいと思います。&doThis

4

1 に答える 1

8

機能連鎖についてはどうですか?

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

$(@)または変数への保存:

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

または2つの組み合わせ。私が考えることができる最後のことはIDEスニペットです。たとえば、textmateを使用すると、letter+TABを.に置き換えて構成できます$(@)

于 2012-08-07T19:16:02.097 に答える