jQuery "on" 和 Coffeescript

11

我在JS中有一个

$("#index").on({
  click : function() { // do something useful with $(this)....}
},"li.superclass");

我如何使用CoffeeScript来描述这个?

3个回答

11

差不多一样:

$("#index").on click: ->
  alert ("hi")
, "li.superclass"

太多括号了!从你的代码中摆脱那些多余的东西,~) - Billy Moon
1
我认为你不能避免在选择器周围加上括号,否则.on会尝试对选择器本身的字符串进行操作。 - Billy Moon
2
我可能会用两个语句来完成它,缓存jQuery对象(通常是一个好主意):$index = $“#index”;$index.on click:-> alert“hi”,“li.superclass” - Billy Moon

4
也许这是您想要的:

也许这是您想要的:

$("#index").on 
    click:->
        alert "hi"
    "li.superclass"

但我认为这更清晰:
events = 
    "click":->
        alert "hi"
$("#index").on events, "li.superclass"

1
如果您需要在处理程序中使用this/@,我认为您正在寻找类似于CoffeeScript的fat arrow的东西,它会为您重新绑定this...
$('#index').on 'click', => alert(@)

注意,您需要使用off来移除处理程序,否则它可能不会被垃圾回收。Backbone 0.9引入了一个listenTo函数,使事件处理程序的管理变得更加合理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接