javascripts资产中的jQuery没有触发

时间:2016-05-05 07:08:18

标签: javascript ruby-on-rails ruby-on-rails-4

如果我将此代码放在erb视图中,它可以完美地运行

<script type="text/javascript">
  $('.disabled-course').click(function() {
    $('#alert').html(
      '<div class="alert alert-warning alert-dismissible">' +
      '  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>' +
      '  <h4><i class="icon fa fa-warning"></i>¡Alerta!</h4>' +
      '  Los cursos en vivo solo están disponibles para usuarios premium' +
      '</div>'
    );
  })
</script>

然而,当我将相同的代码(脚本标记除外)放在assets / javascripts文件夹中的自己的文件中时,它会停止工作。 我也没有正确显示unicode字符(我得到'Ã'而不是'á')

这是rails生成的js文件的样子:

$('.disabled-course').click(function() {
  $('#alert').html(
    '<div class="alert alert-warning alert-dismissible">' +
    '  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>' +
    '  <h4><i class="icon fa fa-warning"></i>¡Alerta!</h4>' +
    '  Los cursos en vivo solo están disponibles para usuarios premium' +
    '</div>'
  );
})

我已经检查过jQuery是否包含在其他所有内容之前,还尝试将其置于$(document).ready(function() {}

之内

1 个答案:

答案 0 :(得分:1)

确保您在application.js清单中包含javascript文件:

<强>的application.js

//= require jquery
.. A bunch of other requires
//= require name_of_js_file

这将加载名为app/assets/javascripts/name_of_js_file.js的文件。作为完整性检查,请确保通过检查开发工具控制台来加载name_of_js_file.js。您还可以添加console.log以在脚本作为完整性检查加载时触发。

另外,为了安全起见,我总是将这种代码包装在$(document).ready(function() {}回调中,就像你提到的那样。这样做的原因是,即使加载了jQuery,您的$('.disabled-course')元素可能甚至不存在于页面上。