1

我想这真的很简单,但我无法让它工作。我在 app/assets/javascript 的 help.js 中有一个脚本。

这是加载的,如果我添加一个 alert() 它就会运行,但是当我尝试调用 javascript (jquery click()) 时没有任何反应。如果我在页面中有 javascript 代码,它可以在页面底部工作。

我猜资产中的包含放在页面的开头,然后我的脚本将无法工作。所以...

  1. 我在编写 javascripts 时完全没有价值吗?
  2. 是否应该将 javascript 放在最后,以及在不移动完整的 javascript_include_tag 的情况下从资产中要求它时如何完成?(我想我可以将它从应用程序中排除并单独加载,但感觉不对)。
  3. 感觉很奇怪,这不应该起作用,所以我哪里出错了?

帮助.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

我认为你的代码是正确的。我在http://jsfiddle.net/Dd46n/检查了它我猜 help.js 是在 jQuery 库文件之前加载的。

于 2012-02-23T12:17:15.293 回答
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 回答