这是一个相当简单的问题,但我似乎无法弄清楚为什么它不起作用
我有这段代码:
$(".positive").numeric({ negative: false }, function() { alert("No negative values"); this.value = ""; this.focus(); })
当我将其放在<script>
和</script>
但是,当我将该公式复制并粘贴到app->assets->javascripts-> page.js.coffee
时,它不起作用。我甚至尝试将代码复制并粘贴到JS2Coffee转换器并粘贴代码的咖啡版本。仍然没有运气。
我的错误认为我的观点无法识别我的资产中的javascript?
以下是coffescript中的代码:
$(".positive").numeric
negative: false
, ->
alert "No negative values"
@value = ""
@focus()
我的application.js有
//= require jquery
//= require jquery_ujs
//= require jquery.numeric
//= require_tree .
答案 0 :(得分:1)
您的CoffeeScript会生成以下JavaScript:
$(".positive").numeric({
negative: false
}, function() {}, alert("No negative values"), this.value = "", this.focus());
正如你所看到的,它不一样。
请注意以下事项:
您的codesnippet看起来像这样,使用正确的CoffeeScript:
$(".positive").numeric
negative: false
->
alert "No negative values"
@value = ""
@focus()
当您将代码放入资产管道时未执行代码的原因是,它将最终位于文档的头部而不是正文中,因此它将在之前执行 / em>浏览器已完成加载DOM。
换句话说 - 还没有任何要获取的元素。
要解决这个问题,请使用JQuery包装代码:
$ ->
# Your code goes here
JQuery将确保只有在DOM准备好进行操作后才能执行代码。