CoffeeScript混乱?(KeyUp Jquery)

and*_*ndy 1 coffeescript

我刚刚开始使用coffeescript看看所有的大惊小怪,我喜欢它.然而,在将我的旧脚本转换为咖啡时,我遇到了一个问题:

$(function() {
    $(create_MP).keyup(function(e){
        if(e.which == 16) {
            isShift = false;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

那是我以前的JQuery,所以我试着把它变成coffeescript:

jQuery ->
    $(create_MP).keyup(e) ->
        if e.which == 16
            isShift = false
Run Code Online (Sandbox Code Playgroud)

但是在打开控制台时出现此错误:

application.js:23Uncaught TypeError: Object [object Object] has no method 'keyUp'

有任何想法吗?

Chu*_*uck 8

无论如何,这段代码都是错 您发布的CoffeeScript等同于:

jQuery(function() {
    $(create_MP).keyup(e)(function() {
        if (e.which == 16) {
            isShift = false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,您正在调用结果keyup(e)并将函数传递给它.你想要的是keyup()用函数作为参数调用.修复它的最简单方法就是在keyup和之间放置一个空格(e) ->.

jQuery ->
  $(create_MP).keyup (e) ->
    isShift = false if e.which is 16
Run Code Online (Sandbox Code Playgroud)