我正在尝试从Coffeescript文件调用javascript函数,对于我的$(document).ready()
,它永远不会被调用。
我想调用的函数来自我在html head元素中包含的外部源,就在我的coffeescript文件包含之前,如下所示:
<script src="external.js"></script>
<%= javascript_include_tag params[:controller], 'data-turbolinks-track' => true %>
并在我的coffeescript文件(称为someControllerName.coffee)中执行此操作:
ready = ->
... call my method
$ -> ready
这是正确的方法吗?我可以在Chrome中看到我的脚本已编译为javascript,我可以在检查器的“网络”标签中看到它。
我正在使用Rails 4,这是我的application.js
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_tree .
编辑:
如果我通过alert("...");
替换方法调用,则可以正常工作,如果我在$(document).ready()
中使用javascript调用我的javascript方法,则可以正常工作。
EDIT2:
这是我真正的javascript函数:
var ready = function () {
$('pre code').each(function (i, e) {
hljs.highlightBlock(e)
});
};
$(document).ready(ready);
我解决了这个问题:
highlight = ->
$("pre code").each (i, e) ->
hljs.highlightBlock(e)
$(document).on 'ready page:load', ->
highlight()
答案 0 :(得分:3)
这不符合你的想法:
$ -> ready
在JavaScript中:
$(function() {
return ready;
});
你的问题是只有ready
只是对函数的引用,它不像在Ruby中那样是函数调用。您必须说ready()
来调用该函数,调用括号的函数只有在您调用带参数的函数时才是可选的:f x
和f(x)
是相同的但是{{ 1}}和f
不同。
我想你想说:
f()
甚至:
$ -> ready()