1

これは本当に簡単だと思いますが、うまくいきません。app/assets/javascript の help.js にスクリプトがあります。

これはロードされ、alert() を追加すると実行されますが、javascript (jquery click()) を呼び出そうとしても何も起こりません。ページにjavascriptコードがある場合、ページの下部にある場合に機能します。

アセットからのインクルードがページの先頭に配置されているため、スクリプトが機能しないと思います。そう...

  1. 私は JavaScript を書くことにまったく価値がないのでしょうか?
  2. javascript を最後に配置する必要がありますか?完全な javascript_include_tag を移動せずにアセットからそれを要求する場合はどうすればよいですか? (アプリケーションから除外して個別にロードすることもできると思いますが、それは間違っているように感じます)。
  3. これが機能しないのは非常に奇妙に感じますが、どこで間違ったのでしょうか?

help.js

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

index.html.erb

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

2 に答える 2

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();
    });
  });
});
于 2012-02-23T12:18:21.393 に答える
5

あなたのコードは正しいと思います。http://jsfiddle.net/Dd46n/で確認しましたが、jQuery ライブラリ ファイルの前に help.js が読み込まれていると思います。

于 2012-02-23T12:17:15.293 に答える