Coffeescript 咖啡脚本混乱?(keyupjquery)
我刚刚开始用coffeescript来了解所有的大惊小怪是怎么回事,我喜欢它。然而,当我把一本旧剧本转换成咖啡时,我遇到了一个问题:Coffeescript 咖啡脚本混乱?(keyupjquery),coffeescript,Coffeescript,我刚刚开始用coffeescript来了解所有的大惊小怪是怎么回事,我喜欢它。然而,当我把一本旧剧本转换成咖啡时,我遇到了一个问题: $(function() { $(create_MP).keyup(function(e){ if(e.which == 16) { isShift = false; } }); }); 这就是我之前使用的JQuery,因此我尝试将其转换为coffeescript: jQuery ->
$(function() {
$(create_MP).keyup(function(e){
if(e.which == 16) {
isShift = false;
}
});
});
这就是我之前使用的JQuery,因此我尝试将其转换为coffeescript:
jQuery ->
$(create_MP).keyup(e) ->
if e.which == 16
isShift = false
但我在打开控制台时出现以下错误:
application.js:23未捕获类型错误:对象[Object Object]没有方法“keyUp”
有什么想法吗?你在评论中提到的问题不是你唯一的问题。您需要在
(e)
前面加一个空格,否则CoffeeScript会认为您试图调用keyup
函数,参数为e
。你想说:
jQuery ->
$(create_MP).keyup (e) ->
if e.which == 16
isShift = false
如果没有空间,您的JavaScript将如下所示:
jQuery(function() {
return $(create_MP).keyup(e)(function() {
// ...
这没有任何意义,因为keyup(e)
不会返回函数。但是,如果添加空格,则(e)->
将成为一个匿名函数的定义,该函数使用一个e
参数:
jQuery(function() {
return $(create_MP).keyup(function(e) {
// ...
这不仅是有意义的,而且也是你想让它做的。你在评论中提到的问题并不是你唯一的问题。您需要在
(e)
前面加一个空格,否则CoffeeScript会认为您试图调用keyup
函数,参数为e
。你想说:
jQuery ->
$(create_MP).keyup (e) ->
if e.which == 16
isShift = false
如果没有空间,您的JavaScript将如下所示:
jQuery(function() {
return $(create_MP).keyup(e)(function() {
// ...
这没有任何意义,因为keyup(e)
不会返回函数。但是,如果添加空格,则(e)->
将成为一个匿名函数的定义,该函数使用一个e
参数:
jQuery(function() {
return $(create_MP).keyup(function(e) {
// ...
这不仅是有意义的,它还做了您希望它做的事情。不管怎样,代码都是错误的。您发布的咖啡脚本相当于:
jQuery(function() {
$(create_MP).keyup(e)(function() {
if (e.which == 16) {
isShift = false
}
}
}
也就是说,您正在调用keyup(e)
的结果并向其传递一个函数。您需要的是使用函数作为参数调用keyup()
。最简单的修复方法就是在keyup
和(e)->
之间加一个空格
jQuery ->
$(create_MP).keyup (e) ->
isShift = false if e.which is 16
不管怎样,那个代码是错误的。您发布的咖啡脚本相当于:
jQuery(function() {
$(create_MP).keyup(e)(function() {
if (e.which == 16) {
isShift = false
}
}
}
也就是说,您正在调用keyup(e)
的结果并向其传递一个函数。您需要的是使用函数作为参数调用keyup()
。最简单的修复方法就是在keyup
和(e)->
之间加一个空格
jQuery ->
$(create_MP).keyup (e) ->
isShift = false if e.which is 16
呜呜!我愚蠢的错误。我在脚本中输入了keyUp而不是keyUp.:)呜呜!我愚蠢的错误。我在脚本中输入了keyUp而不是keyUp.:)