【问题标题】:jQuery in javascripts assets not firingjavascript资产中的jQuery没有触发
【发布时间】:2016-05-05 07:08:17
【问题描述】:

如果我将此代码放在 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() {}

【问题讨论】:

  • 浏览器 js 控制台是否出现错误?

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


【解决方案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') 元素也可能不存在于页面上。

【讨论】:

  • 我尝试将它放在 $(document).ready(function() {} 中并在 application.js 中要求它,但它仍然无法正常工作。无论如何,我在 application.js 的末尾使用require tree .
  • 我回去改变了其他东西,它正在工作。我认为$(document).ready(function() {} 做到了。也许文件没有刷新或奇怪的东西......
猜你喜欢
  • 1970-01-01
  • 2017-12-28
  • 2016-03-14
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多