Rails 5和Coffeescript:On Click Event Not触发

时间:2016-12-12 05:03:15

标签: jquery ruby-on-rails coffeescript

在我的网页上,我有一个动态追加到我页面的div元素。

在该div中,我有一个链接,点击后,它会使用ajax从我的服务器中提取数据。

<div class="main-div">
  <a href="#" class="pull-data"><b>Click Here</b></a>
</div>

如果我在页面上的jQuery中有一个on click事件,它可以正常工作:

$("a.pull-data").on("click", function(e) {
    console.log("Clicked!");
}

然而,当我尝试将其转换为coffeescript时,就像这样,没有任何东西被触发:

jQuery ->
  $("a.pull-data").on "click", ->
    console.log "Clicked?"

我的coffeescript中是否缺少某些东西?如何修复我的coffeescript以使其捕获动态添加元素的点击?

1 个答案:

答案 0 :(得分:0)

您的两个代码示例不相同:

$("a.pull-data") // create a jquery object matching the CSS selector
  .on("click", function(e) { // add a click handler that
    console.log("Clicked!"); // logs "Clicked!" to the console
  });

这是你的咖啡因的转换版本:

jQuery(function() { // pass anon fn to jQuery constructor
  return $("a.pull-data").on("click", function() { // returning a fn that
    return console.log("Clicked?"); // attaches the click handler
  });
});

这是创建一个匿名函数,它可以完成你想要的所有东西,然后将它传递给jQuery构造函数,这意味着它什么都不做,因为它从未实际调用过。

总是, 始终 只要出现问题,请查看输出JavaScript。您甚至可以使用coffeescript.org处的交互式编译器来构建函数,同时密切关注输出。