【问题标题】:jquery.delegate() and Coffeescriptjquery.delegate() 和 Coffeescript
【发布时间】:2011-12-27 23:59:05
【问题描述】:

我是 Coffeescript 的新手,想在 jquery 1.6.4 中使用 delegate() 方法。方法签名是.delegate( selector, eventType, handler )。如何在 Coffeescript 中调用此方法?我正在使用 Rails 3.1。

谢谢, 丹妮。

【问题讨论】:

    标签: jquery coffeescript


    【解决方案1】:

    就像咖啡脚本中的任何其他方法一样?

    ($ 'body').delegate '.external.link', 'click', (evt) ->
      # handler body
    

    我觉得我错过了关于你的问题的一些东西......

    【讨论】:

    • 非常感谢,现在您已经说过了,这似乎非常明显。但是,如果参数中有两个处理程序会发生什么?
    • $符号不是在括号的反边吗?
    • @bobbdelsol:没有。 $ 'body' 是一个咖啡脚本表达式,就像 javascript 中的 $('body') 一样。 cs 中的 $ 'body'.delegate 与 js 中的 $('body').delegateunlike 的,括号在两种语言中都重置运算符优先级。 cs 中的 ($ 'body').delegate 就像 js 中的 ($('body')).delegate
    【解决方案2】:

    回答您的 2 个处理程序问题:

    $('body').hover ->
      # handler 1
      console.log 'in'
    , ->
      # handler 2
      console.log 'out'
    

    http://js2coffee.org/ 是一个很好的后台网站,如果你在没有自动编译器的情况下编写咖啡脚本,可以让你立即检查生成的 javascript。

    【讨论】:

    • 或者,您可以将每个处理程序括在括号中。这个问题出现了很多......见stackoverflow.com/questions/6463052/…
    • 是的,有时这是最简单的方法
    • 谢谢 - 我将 Textmate 与 Coffeescript 包一起使用,以便编译和检查。
    【解决方案3】:

    这纯粹是美学问题,但我更喜欢将我的处理程序包装在命名函数中(如果有多个):

        over = => ...
        out  = => ...
    
        $el.hover over, out
    

    它对我来说似乎更干净。

    【讨论】:

      【解决方案4】:

      我可能很密集,但上面的正确答案花了我一些时间才弄清楚。 第一个参数是 div 还是 ?要监视新元素,则需要提供元素标识符,然后是事件类型

      $('#forum-senate-admin-lists').delegate 'input[id=delete-forum-object]','click', (evt) ->
          deleteForumObject($(this))`
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-12
        • 1970-01-01
        • 1970-01-01
        • 2013-01-08
        • 2012-09-12
        • 2011-12-07
        • 2011-05-16
        • 1970-01-01
        相关资源
        最近更新 更多