【问题标题】:How do I use the new jQuery .on() function (with CoffeeScript)?如何使用新的 jQuery .on() 函数(使用 CoffeeScript)?
【发布时间】:2012-10-27 13:17:05
【问题描述】:

.on() 的功能似乎不像.live()。我想做的只是一个简单的提醒让我继续前进。我的页面上有以下元素:

<a class="add_showcase_item" href="javascript://">621015</a>

我有以下 CoffeeScript:

$("a").live "click", ".add_showcase_item", ->
  alert "hello"
  false

不幸的是,这会导致警报在每个链接上都响起。我知道这没有任何意义。有人可以帮忙吗?

【问题讨论】:

    标签: jquery ruby-on-rails-3 coffeescript


    【解决方案1】:

    正如jQuery docs 所说,您需要指定委托,然后作为参数提供您想要监听的实际选择器:

    $("body").on "click", "a.add_showcase_item" , -> //...
    

    【讨论】:

    • 指定代理是可选的,$('a.add_showcase_item').on 也可以
    • 技术上你可以。如果您不传入选择器,则委托等于侦听器。但是,如果您这样做,则侦听器将充当委托,因为事件目标已被过滤。
    • 技术上你没有,这只是性能问题(我不争论你提出的解决方案是正确的)
    • 我可以告诉你答案确实有效,但是用“a.add_showcase_item”代替“body”是行不通的。它应该,但绝对不是。我只是觉得我必须为每个 .on() 调用指定“body”是很愚蠢的。但我想这就是我必须做的。
    • 您不必这样做,他只是使用它,因为您没有指定这些链接所在的容器。所以在您的情况下 $('#id_of_your_wrapper').on 'click', ' a.add_showcase_item' 等会起作用
    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多