2011-11-13 4 views
0

私はCoffeescriptの初心者で、jquery 1.6.4でdelegate()メソッドを使いたいと思っています。メソッドの署名は.delegate(selector, eventType, handler)です。 Coffeescriptでこのメソッドを呼び出すにはどうすればいいですか?私はRails 3.1を使用しています。jquery.delegate()とCoffeescript

おかげで、 ダニー。

答えて

6

coffeescriptの他の方法とまったく同じですか?

($ 'body').delegate '.external.link', 'click', (evt) -> 
    # handler body 

私はあなたの2つのハンドラの質問にはお答えするには...

+0

多くのおかげで、あなたがそれを言った、今という驚くほど明白と思われます。しかし、パラメータに2つのハンドラがあるとどうなりますか? – codedog

+0

はかっこの反対側の$記号ではありませんか? – bobbdelsol

+0

@bobbdelsol:いいえ。 '$ 'body''は、javascriptの '$( 'body')'のようなコーポレート表現です。 '$ 'body'.delegate'は、jsの* $(' body ')。delegate'と違って、両方の言語でオペレータの優先順位をリセットします。 '($ body ')。delegate'はjsの'($(' body '))。delegate'と同じです。 –

3

をあなたの質問について何かを欠けているように私は感じる:

$('body').hover -> 
    # handler 1 
    console.log 'in' 
, -> 
    # handler 2 
    console.log 'out' 

http://js2coffee.org/があれば、バックグラウンドで持っている良いウェブサイトです自動コンパイラを使用せずにcoffeescriptを書くと、結果的にjavascriptを即座にチェックすることができます。

+4

または、かっこで各ハンドラをラップすることもできます。この質問は多く出てきます... http://stackoverflow.com/questions/6463052/how-to-pass-two-anonymous-functions-as-arguments-in-coffescriptを参照してください。 –

+0

はい、時には最も簡単な方法です。 – Guillaume86

+0

ありがとうございます。私はCoffeescriptバンドルでTextmateを使用しますので、コンパイルして確認することができます。 – codedog

1

それは美学の純粋な問題だが、(複数ある場合)私は名前の関数で、私のハンドラをラップすることを好む:

over = => ... 
    out = => ... 

    $el.hover over, out 

それはちょうど私のためにきれいそうです。

0

私は密集しているかもしれませんが、上記の正解は私には分かりかねません。 最初のパラメータはdivか?あなたは新しい要素を監視することを、あなたは要素の識別子を提供する必要があり、その後、イベントタイプ

$('#forum-senate-admin-lists').delegate 'input[id=delete-forum-object]','click', (evt) -> 
    deleteForumObject($(this))`