2012-05-10 11 views
0

jQueryをRailsで使用するのが初めてで、クリックまたはホバーイベントで認識されるdivを取得できません。 coffeescriptも使用しますが、コンパイルはうまくいきます。 divはChromeデベロッパーツールの要素ウィンドウによく見えますが、console.logはコンソールウィンドウに表示されません。私_form.html.hamlのjquery in railsはクリックイベントを認識しません

部分

.field 
    = f.label :question 
    = f.text_field :question 
%p Click the plus sign to add answers. 
.field#answerone 
    = f.label :answers 
    = f.text_field :answers 
#plusanswer 
    = image_tag("plusWhite.png", :alt => "plus sign") 

.actions 
    = f.submit 'Save' 

のCoffeeScript:

$("#plusanswer").click -> 
    console.log("here we are") 
    $("#answerone").clone().appendto() 

コンパイルのjavascript:

(function() { 

    $("#plusanswer").click(function() { 
    console.log("here we are"); 
    return $("#answerone").clone().appendto(); 
    }); 

}).call(this); 

は、私は物事をめちゃくちゃIMAGE_TAGをやっている方法です?

+0

'$(document).ready()'ハンドラでクリックイベントをラッピングしていますか?私がCoffeeScriptを使い始めたとき、言語の違いによって私もそれを忘れてしまいました。 –

+0

'appendto'とは何ですか? jQueryには 'appendTo'がありますが、引数が必要です。そして、あなたは無効なHTMLの権利を作り出すことを知っていますか? HTMLに 'id'を重複させることはできません。 –

+0

セルジオ、あなたはもちろんそうだった。あなたがコメントで答えたのであなたにクリックを与えることができませんでした。 – charliemagee

答えて

3

私はSergioが彼のコメントで正しいと信じています。あなたのJSがページのマークアップの前に来る場合、その要素が存在する前にセレクタ$(#plusanswer')が実行されます。あなたはこの問題を解決するには、コード

console.log $('#pluganswer').length 

でこれを確認することができ、そのように、jQueryのドキュメント準備ラッパーでコードをラップ:これは少し魔法のように見えますが、ここではそれがどのように動作するかだ

$ -> 
    # the rest of your code goes here 

:とき関数をjQueryオブジェクト$に渡すと、documentの "準備完了"イベントが発生した後にのみ、その関数が実行されます。あなたのコードがあなたのマークアップに先行すると仮定すると、あなたはこの振る舞いを得なければなりません:

console.log $('#pluganswer').length # 0 
$ -> 
    console.log $('#pluganswer').length # 1, because the page's markup is loaded 
+0

Trevorに感謝します。ねえ、私はあなたのCoffeescriptの本を手に入れました。残念ながら、中級から上級のJavascriptコーダーにとってはより適切と思われます。私は初心者で、始めたばかりのCoffeescriptに遭遇しました。私は間違いのために一定の誤りから行った。と}と) "句読点"のエラーはほとんどありません。今ではJavascriptの骨頭初心者のエラーです。 。 。今ハム、ルビーなど – charliemagee

+0

まあ、本を買ってくれてありがとう! CoffeeScriptを学ぶ前に、JSの基礎を学ぶことを強くお勧めします。素晴らしいリソースは、[CodeSchool](http://www.codeschool.com/)のインタラクティブなjQuery Airコースです。 –

関連する問題