CoffeeScript - 使用JQuery On将事件绑定到动态加载的对象

CHa*_*awk 20 ajax jquery coffeescript

致力于在Coffeescript中重写我的网站的前端.我理解如何将click函数绑定到类.

$('.song').click ->
    //code
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了动态加载内容的一些问题.我知道在JQuery中,解决方法是使用"On"函数,如下所示:

$(document).on('click', '.song', function(){
    //code
});
Run Code Online (Sandbox Code Playgroud)

但我不确定这是如何转化为咖啡因的.我的印象是火箭箭头 - >转换为javascript中的匿名函数,但如果函数是其中一个参数,它是如何工作的?我尝试了很多不同的语法,但它们似乎都不起作用,谢谢!

Epe*_*eli 21

如果执行顺序没有它们,通常不会在CoffeeScript中使用括号.所以这可以这样写:

$(document).on 'click', '.song', ->
    ### code ###
Run Code Online (Sandbox Code Playgroud)

但是,当执行顺序不明显时,总是使用括号.


Luc*_*ero 15

$(document).on('click', '.song', ( ->
    ### code ###
));
Run Code Online (Sandbox Code Playgroud)

转换为此JavaScript:

$(document).on('click', '.song', (function() {
  /* code */
}));
Run Code Online (Sandbox Code Playgroud)

请注意,您可能希望使用=>运算符而不是->; 使用双箭头也绑定this到事件处理程序(相当于使用jQuery的绑定).