如果我将此代码放在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() {}
答案 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')
元素可能甚至不存在于页面上。