2012-02-23 8 views
1

これは本当に簡単だと思いますが、うまく動作しません。アプリ/アセット/ javascriptのhelp.jsにスクリプトがあります。Railsでjavascriptを実行する

これはロードされ、アラートを追加すると実行されますが、javascript(jquery click())を呼び出すと何も起こりません。ページにjavascript-codeがあると、ページの一番下にあれば動作します。

私は、資産のインクルードがページの先頭に置かれていると思うので、スクリプトが動作しません。だから...

  1. 私はJavaScriptを書くことに全く無益ですか?
  2. javascriptを最後に配置する必要があります。完全なjavascript_include_tagを動かさずにアセットから必要なときにはどうすればよいですか? (私はそれをアプリケーションから除外し、それを別々に読み込むことができると思うが、それは間違っていると感じる)。
  3. これはうまくいかないと思うので、どこが間違っていましたか?

help.js

<div class="clickme" data-message="Something..."> 
    <%= image_tag("question_mark.png", :alt => "helper") %><br> 
</div> 
+0

クリックした後でfirebug/jsコンソールにエラーがありますか? jqueryをapplication.jsファイルに含めないか、help.jsファイルの後にjqueryライブラリを必要としていると思います。 application.jsファイルの内容を貼り付けてください。 –

+0

お友達には、DOMが準備完了した後にスクリプトを実行する必要があります。@Gonzalo Queroはcorrentです。 –

答えて

5

jQueryのイベントは、ドキュメントが完全に読み込まれた後に追加する必要があります。試してみましたか?

$(document).ready(function() { 
    $('.clickme').click(function() { 
    $('#working').show(); 
    var htmlStr = this.getAttribute('data-message'); 
    $('#helper_box').html(htmlStr); 
    $('#helper_box').toggle('slow', function() { 
    // Animation complete. 
    $('#working').hide(); 
    }); 
    }); 
}); 
+0

甘い。それがトリックでした。私はそれが何か簡単だと思ったように、あなたが今それをしていれば、ほとんどすべてがそうです。ありがとうゴンザロ。 – abegbg

+0

問題ありません。あなたを助けてうれしい! –

5

index.html.erb

$('.clickme').click(function() { 
    $('#working').show(); 
    var htmlStr = this.getAttribute('data-message'); 
    $('#helper_box').html(htmlStr); 
    $('#helper_box').toggle('slow', function() { 
    // Animation complete. 
    $('#working').hide(); 
    }); 
}); 

私はあなたのコードが正しいと思います。私はhttp://jsfiddle.net/Dd46n/でそれをチェックした。jQueryライブラリファイルの前にhelp.jsがロードされていると思う。

+0

Yupp。それが問題でした。ヘッドアップをありがとう。 – abegbg

関連する問題